easy es
v2.0.0
為簡化開發而生
Easy-Es 是 RestHighLevelClient 的一個強大增強工具包,用於簡化開發。該工具包為 ElasticSearch 提供了一些高效、有用、開箱即用的功能。透過使用Easy-Es,您可以使用MySQL語法完成Es查詢。使用它可以有效節省您的開發時間。
easy-es網站https://en.easy-es.cn/
easy-es gitcode https://gitcode.com/dromara/easy-es
easy-es gitee https://gitee.com/dromara/easy-es
easy-es github https://github.com/dromara/easy-es
德羅馬拉網站https://dromara.org/
dromara gitee 首頁https://gitee.com/dromara/
需求:查詢標題為「Hi」、作者為「Guy」的所有文檔
// Use Easy-Es to complete the query with only 1 lines of code
List < Document > documents = documentMapper . selectList ( EsWrappers . lambdaQuery ( Document . class ). eq ( Document :: getTitle , "Hi" ). eq ( Document :: getCreator , "Guy" ));
// Query with RestHighLevelClient requires 11 lines of code, not including parsing JSON code
String indexName = "document" ;
SearchRequest searchRequest = new SearchRequest ( indexName );
BoolQueryBuilder boolQueryBuilder = QueryBuilders . boolQuery ();
TermQueryBuilder titleTerm = QueryBuilders . termQuery ( "title" , "Hi" );
TermsQueryBuilder creatorTerm = QueryBuilders . termsQuery ( "creator" , "Guy" );
boolQueryBuilder . must ( titleTerm );
boolQueryBuilder . must ( creatorTerm );
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder ();
searchSourceBuilder . query ( boolQueryBuilder );
searchRequest . source ( searchSourceBuilder );
try {
SearchResponse searchResponse = restHighLevelClient . search ( searchRequest , RequestOptions . DEFAULT );
// Then parse the DocumentList from searchResponse in various ways, omitting these codes...
} catch ( IOException e ) {
e . printStackTrace ();
}
以上只是一個簡單的查詢演示。實際查詢場景越複雜,效果越好,平均可以節省3-5倍的程式碼量。
最新版本:
新增 Easy-Es 依賴項
< dependency >
< groupId >org.dromara.easy-es</ groupId >
< artifactId >easy-es-boot-starter</ artifactId >
< version >Latest Version</ version >
</ dependency >
compile group : ' org.dromara.easy-es ' , name : ' easy-es-boot-starter ' , version : ' Latest Version '
新增映射器檔案擴充BaseEsMapper介面
public interface DocumentMapper extends BaseMapper < User > {
}
使用它
LambdaEsQueryWrapper < Document > wrapper = new LambdaEsQueryWrapper <>();
wrapper . eq ( Document :: getTitle , "Hello World" )
. eq ( Document :: getCreator , "Guy" );
List < Document > documentList = documentMapper . selectList ();
Easy-Es 將執行以下查詢:
{ "query" :{ "bool" :{ "must" :[{ "term" :{ "title" :{ "value" : " Hello World " , "boost" : 1.0 }}},{ "term" :{ "creator" :{ "value" : " Guy " , "boost" : 1.0 }}}], "adjust_pure_negative" : true , "boost" : 1.0 }}}
MySQL 中該查詢的語法為:
SELECT * FROM document WHERE title = ' Hello World ' AND creator = ' Guy '
這個展示只是 Easy-Es 功能的一小部分。如果您想了解更多信息,請參閱文件。
MySQL | 易Es | Es-DSL/Es java api |
---|---|---|
和 | 和 | 必須 |
或者 | 或者 | 應該 |
= | 情緒智商 | 學期 |
!= | 訥 | boolQueryBuilder.mustNot(queryBuilder) |
> | GT | QueryBuilders.rangeQuery('es 欄位').gt() |
>= | 葛 | .rangeQuery('es 欄位').gte() |
< | 其 | .rangeQuery('es 字段').lt() |
<= | 樂 | .rangeQuery('es 欄位').lte() |
就像“%字段%” | 喜歡 | QueryBuilders.wildcardQuery(字段,值) |
不像“%field%” | 不喜歡 | 不得使用通配符Query(field, value ) |
就像“%字段” | 喜歡左 | QueryBuilders.wildcardQuery(字段,*值) |
就像“字段%” | 喜歡對的 | QueryBuilders.wildcardQuery(字段,值*) |
之間 | 之間 | QueryBuilders.rangeQuery('es 欄位').from(xx).to(xx) |
不在之間 | 不在之間 | 不得 QueryBuilders.rangeQuery('es field').from(xx).to(xx) |
為空 | 為空 | 不得 QueryBuilders.existsQuery(field) |
不為空 | 不為空 | QueryBuilders.existsQuery(字段) |
在 | 在 | QueryBuilders.termsQuery(" xx es 欄位", xx) |
不在 | 不在 | 不得 QueryBuilders.termsQuery(" xx es field", xx) |
分組依據 | 分組依據 | AggregationBuilders.terms() |
訂購依據 | 排序依據 | fieldSortBuilder.order(ASC/DESC) |
分分鐘 | 分分鐘 | AggregationBuilders.min |
最大限度 | 最大限度 | AggregationBuilders.max |
平均 | 平均 | 聚合建構器.avg |
和 | 和 | 聚合建構器.sum |
按 xxx 升序排序 | 按升序排序 | fieldSortBuilder.order(SortOrder.ASC) |
按 xxx 描述訂購 | 按描述排序 | fieldSortBuilder.order(SortOrder.DESC) |
- | 匹配 | 配對查詢 |
- | 匹配短語 | QueryBuilders.matchPhraseQuery |
- | 匹配前綴 | QueryBuilders.matchPhrasePrefixQuery |
- | 查詢字串查詢 | QueryBuilders.queryStringQuery |
選擇 * | 符合所有查詢 | QueryBuilders.matchAllQuery() |
- | 強調 | 突出顯示生成器.字段 |
…… | …… | …… |
捐贈 Easy-Es
Easy-Es 遵循 Apache 2.0 授權。有關詳細信息,請參閱 Apache 許可證 2.0 文件。