開発を簡素化するために生まれました
Easy-Es は、開発を簡素化するために RestHighLevelClient の強力に強化されたツールキットです。このツールキットは、ElasticSearch に効率的で便利な、すぐに使える機能をいくつか提供します。 Easy-E を使用すると、MySQL 構文を使用して Es クエリを完了できます。これを使用すると、開発時間を効果的に節約できます。
easy-es Webサイトhttps://ja.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-E は次のクエリを実行します。
{ "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-E の機能のほんの一部です。さらに詳しく知りたい場合は、ドキュメントを参照してください。
MySQL | イージーエス | 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%」とは違います | 好きじゃない | wildcardQuery(field, value ) は使用できません |
'%フィールド' のように | 左のような | QueryBuilders.wildcardQuery(フィールド,*値) |
「フィールド%」のように | いいね | QueryBuilders.wildcardQuery(フィールド,値*) |
間 | 間 | QueryBuilders.rangeQuery('es フィールド').from(xx).to(xx) |
間ではありません | 間ではありません | QueryBuilders.rangeQuery('es field').from(xx).to(xx) は使用できません。 |
ヌルです | isNull | QueryBuilders.existsQuery(field) は使用できません |
Null ではありません | isNotNull | QueryBuilders.existsQuery(フィールド) |
で | で | QueryBuilders.termsQuery(" xx es フィールド", xx) |
入っていない | 入っていない | QueryBuilders.termsQuery(" xx es field", xx) は使用できません |
グループ化 | グループ化 | AggregationBuilders.terms() |
までに注文する | 注文方法 | フィールドSortBuilder.order(ASC/DESC) |
分 | 分 | AggregationBuilders.min |
最大 | 最大 | AggregationBuilders.max |
平均 | 平均 | AggregationBuilders.avg |
和 | 和 | AggregationBuilders.sum |
xxx 昇順で注文 | orderByAsc | フィールドSortBuilder.order(SortOrder.ASC) |
xxx の説明で注文 | orderByDesc | フィールドSortBuilder.order(SortOrder.DESC) |
- | マッチ | matchQuery |
- | マッチフレーズ | QueryBuilders.matchPhraseQuery |
- | 一致プレフィックス | QueryBuilders.matchPhrasePrefixQuery |
- | クエリ文字列クエリ | QueryBuilders.queryStringQuery |
選択 * | matchAllQuery | QueryBuilders.matchAllQuery() |
- | ハイライト | HighlightBuilder.フィールド |
... | ... | ... |
Easy-E を寄付する
Easy-Es は Apache 2.0 ライセンスの下にあります。詳細については、Apache License 2.0 ファイルを参照してください。