Skip to content

Commit

Permalink
ok
Browse files Browse the repository at this point in the history
  • Loading branch information
xpc committed Mar 19, 2024
1 parent 5deb7af commit 48ec3cd
Show file tree
Hide file tree
Showing 12 changed files with 478 additions and 258 deletions.
3 changes: 2 additions & 1 deletion docs/10.v2.x文档/010.快速入门/010.简介.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ Easy-Es(简称EE)是一款基于ElasticSearch(简称Es)官方提供的RestHi
- **屏蔽语言差异:** 开发者只需要会MySQL语法即可使用Es,真正做到一通百通,无需学习枯燥易忘的Es语法,Es使用相对MySQL较低频,学了长期不用也会忘,没必要浪费这时间.开发就应该专注于业务,省下的时间去撸铁,去陪女朋友陪家人,不做资本家的韭菜
- **代码量极少:** 与直接使用RestHighLevelClient相比,相同的查询平均可以节省3-80倍左右的代码量
- **零魔法值:** 字段名称直接从实体中获取,无需输入字段名称字符串这种魔法值,提高代码可读性,杜绝因字段名称修改而代码漏改带来的Bug
- **拓展性强:** 框架内置混合查询,原生查询,无论是索引层面还是CRUD层面,都拥有>=原生API的拓展性,无需担心引入后影响开发,只要是ES本身能支持的功能使用Easy-ES都可以搞定
- **零额外学习成本:** 开发者只要会国内最受欢迎的Mybatis-Plus语法,即可无缝迁移至EE,EE采用和前者相同的语法,消除使用者额外学习成本,直接上手,爽
- **降低开发者门槛:** Es通常需要中高级开发者才能驾驭,但通过接入EE,即便是只了解ES基础的初学者也可以轻松驾驭ES完成绝大多数需求的开发,可以提高人员利用率,降低企业成本

Expand All @@ -46,7 +47,7 @@ Easy-Es(简称EE)是一款基于ElasticSearch(简称Es)官方提供的RestHi

## 参与贡献
尽管目前Easy-Es诞生不算太久,但由于站在巨人的肩膀上(RestHighLevelClient和Mybatis-Plus),这是一款出道即巅峰的框架,这么说并不是说它写得有多好,而是它融合了两款目前非常优秀框架的优点,以及MP的用户习惯和用户生态,这决定了它起点的高度,未来可期,所以在此欢迎各路好汉一起来参与完善 Easy-Es我们期待你的 PR!
在Easy-Es出道前,由于ES本身API的高复杂性,市面上除了SpringData一家在做ES-ORM,Easy-Es的出现填补了国内ES-ORM十多年的空缺,并且MP的设计理念天然优于SpringData,目前经过长期不懈的努力,我们在国内ES-ORM这片市场已经稳居第一,但我们并不满足于此,我们的目标是成为全球最受欢迎的ES-ORM,所以在此欢迎各路好汉一起来参与完善 Easy-Es,我们期待你的 PR!

- 贡献代码:代码地址 [Easy-ES](https://gitee.com/dromara/easy-es),欢迎提交 Issue 或者 Pull Requests
- 维护文档:文档地址 [Easy-ES](https://github.com/xpc1024/easy-es-home-pages),欢迎参与翻译和修订
Expand Down
2 changes: 1 addition & 1 deletion docs/10.v2.x文档/010.快速入门/030.顾虑粉碎.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ permalink: /pages/98acf6/

![1](https://iknow.hs.net/a057bb79-2f27-4785-b177-87f3056fe920.jpg)

我们先来看EE在整个查询过程中做了什么事? 其核心事宜总结起来就2件:
我们先来看EE在整个查询过程中做了什么事? 其核心事宜总结起来就2件(当然只是为了抽象后方便您理解,实际复杂度只有您读完源码或用ES原生API开发后才会有所体会):


1. 把用户输入的MySQL语法(Mybatis-Plus语法)转换成RestHighLevel语法,然后调用RestHighLevelClient执行本次查询
Expand Down
104 changes: 98 additions & 6 deletions docs/10.v2.x文档/010.快速入门/080.注解.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,31 @@ public class Application{

:::

## [@Settings](https://gitee.com/dromara/easy-es/blob/master/easy-es-annotation/src/main/java/org/dromara/easyes/annotation/Settings.java)

- 描述:索引Settings信息注解,可设置ES索引中的Settings信息

- 使用位置:实体类

```java
@Settings(shardsNum = 3, replicasNum = 2, settingsProvider = MySettingsProvider.class)
public class Document {
// 省略其它字段
}
```
| 属性| 类型 | 必须指定| 默认值 | 描述 |
|---|--------|---|-------|-----------|
|shardsNum| Int || 1 | 索引分片数,默认值为1 |
|replicasNum| Int || 1 | 索引副本数,默认值为1 |
|maxResultWindow| Int || 10000 | 默认最大返回数 |
|refreshInterval| String || "" | 索引的刷新间隔 es默认值为1s ms:表示毫秒 s:表示秒 m:表示分钟 |
|settingsProvider| Class || DefaultSettingsProvider.class | 自定义settings提供类 默认为DefaultSettingsProvider空实现 如需自定义,可继承此类并覆写getSettings方法 将settings信息以Map返回 |

:::tip 温馨提示
- maxResultWindow:默认最大返回数,默认值为10000,超过此值推荐使用searchAfter或滚动查询等方式,性能更好,详见拓展功能章节. 当此值调整至大于1W后,需要更新索引并同步开启配置文件中的enable-track-total-hits=true方可生效
- settingsProvider:自定义settings提供类,当小部分场景下,框架内置的这些参数不足以满足您对索引Settings的设置时,您可以自定义类并继承DefaultSettingsProvider,覆写其中的getSettings方法,将您自定义的settings信息以Map返回,通过此方式可以支持所有ES能够支持的Settings


## [@IndexName](https://gitee.com/dromara/easy-es/blob/master/easy-es-annotation/src/main/java/org/dromara/easyes/annotation/IndexName.java)

- 描述:索引名注解,标识实体类对应的索引 对应MP的@TableName注解,在v0.9.40之前此注解为@TableName.
Expand All @@ -45,14 +70,9 @@ public class Document {
| 属性| 类型| 必须指定|默认值 |描述 |
|---|---|---|---|---|
|value|String||""|索引名,可简单理解为MySQL表名|
|shardsNum|int||1|索引分片数|
|replicasNum|int||1|索引副本数|
|aliasName|String||""|索引别名|
|keepGlobalPrefix|boolean||false|是否保持使用全局的 tablePrefix 的值,与MP用法一致|
|child|boolean||false|是否子文档|
|childClass|Class||DefaultChildClass.class|父子文档-子文档类|
|maxResultWindow|int||10000|分页返回的最大数据量,默认值为1万条,超出推荐使用searchAfter或滚动查询等方式,详见拓展功能章节. 当此值调整至大于1W后,需要重建索引并同步开启配置文件中的enable-track-total-hits=true方可生效|
|routing|String||""|路由,CRUD作用的路由|
|refreshPolicy|Enum||NONE|索引数据刷新策略,默认为不刷新,其取值参考RefreshPolicy枚举类,一共有3种刷新策略|


Expand All @@ -67,7 +87,6 @@ public class Document {
- keepGlobalPrefix选项,(0.9.4+版本才支持)默认值为false,是否保持使用全局的 indexPrefix 的值:
- 既配置了全局tablePrefix,@TableName注解又指定了value值时,此注解选项才会生效,如果其值为true,则框架最终使用的索引名称为:全局indexPrefix+此注解的value,例如:dev_document
- 此注解选项用法和MP中保持一致.
- 其中shardNum为分片数,replicasNum为副本数,如果不指定,默认值均为1
- RefreshPolicy 数据刷新策略
- None 不刷新,es默认的策略,此策略下数据变更后有一定延迟才会生效,但写入性能最好,通常情况下使用此默认策略即可
- IMMEDIATE 立即刷新,适用于对数据延迟敏感的业务场景,但消耗的系统资源最大
Expand Down Expand Up @@ -295,6 +314,79 @@ public class Document {
| value | String ||""| 数据源名称,与配置文件中指定的一致 |


## [@Join](https://gitee.com/dromara/easy-es/blob/master/easy-es-annotation/src/main/java/org/dromara/easyes/annotation/Join.java)

- 描述:Join父子类型注解,用于父子类型索引关系表达

- 使用位置:父子类型根节点Root类

```java
/**
* Document根文档有子文档Author(作者)和Comment(评论),其中Author还有个子文档Contact(联系方式)
* Join父子类型结构如下所示
* Document
* / \
* Comment Author
* \
* Contact
* 上述结构可用@Join注解和@Node注解来表达,可参考下面案例
**/
@Join(nodes = {@Node(parentClass = Document.class, childClasses = {Author.class, Comment.class}), @Node(parentClass = Author.class, childClasses = Contact.class)})
public class Document {
// 省略其它无关字段
}
```

| 属性| 类型 | 必须指定 |默认值 | 描述 |
|---|--------------|------|---|-----------------------------------------|
|joinField| String ||""| 索引中的join字段名称 默认为joinField(推荐) |
|rootAlias| String ||""| 根节点别名 不指定则默认使用加了当前注解的根类的名称小写作为根节点别名(推荐) |
|nodes| Annotation[] ||""| 非根节点列表 |

:::tip 温馨提示

更多关于此注解的使用可以参考Join父子类型章节文档

:::

## [@Node](https://gitee.com/dromara/easy-es/blob/master/easy-es-annotation/src/main/java/org/dromara/easyes/annotation/Node.java)

- 描述:Join父子类型注解,用于父子类型索引关系表达

- 使用位置:父子类型根节点Root类

```java
/**
* Document根文档有子文档Author(作者)和Comment(评论),其中Author还有个子文档Contact(联系方式)
* Join父子类型结构如下所示
* Document
* / \
* Comment Author
* \
* Contact
* 上述结构可用@Join注解和@Node注解来表达,可参考下面案例
**/
@Join(nodes = {@Node(parentClass = Document.class, childClasses = {Author.class, Comment.class}), @Node(parentClass = Author.class, childClasses = Contact.class)})
public class Document {
// 省略其它无关字段
}
```

| 属性| 类型 | 必须指定 | 默认值 | 描述 |
|---|--------|------|-----|-----------------------------------------|
|parentAlias| String || "" | 父文档别名 非必填,不指定时默认值为parentClass类名小写(推荐) |
|parentClass| Class || - | 父文档实体类,必填项 |
|childAliases| String || "" | 子文档别名列表,不指定则为子文档类名小写列表(推荐) 若要自定义必须与childClasses数量和顺序一致 |
|childClasses| Class || - | 子文档实体类列表,必填项 |


:::tip 温馨提示

更多关于此注解的使用可以参考Join父子类型章节文档

:::


## 其它注解

除了上面这几个高频注解,项目中偶尔还会用到一些其它注解,比如比如拦截器注解@Intercepts等注解,我们会在后面具体的章节详细介绍,此处仅列出几个必须掌握的注解,其它注解按需学习即可。
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ permalink: /pages/060052/
---
## LambdaEsIndexWrapper
:::tip
索引的CRUD中的相关条件依托于此构造器进行封装
索引的CRUD中的相关条件依托于此构造器进行封装,此方式为框架最早提供的一种索引创建方式,现阶段已不推荐,推荐使用自定义注解+mapper.createIndex()方式一键创建,更简单,更便捷,可参考索引托管章节文档.
:::

### API说明
Expand Down
Loading

0 comments on commit 48ec3cd

Please sign in to comment.