Geboren, um die Entwicklung zu vereinfachen
Easy-Es ist ein leistungsstarkes, erweitertes Toolkit von RestHighLevelClient zur Vereinfachung der Entwicklung. Dieses Toolkit bietet einige effiziente, nützliche und sofort einsatzbereite Funktionen für ElasticSearch. Durch die Verwendung von Easy-Es können Sie die MySQL-Syntax verwenden, um Es-Abfragen abzuschließen. Wenn Sie es verwenden, können Sie Ihre Entwicklungszeit effektiv sparen.
easy-es-Website 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
Dromara-Website https://dromara.org/
Dromara Gitee-Homepage https://gitee.com/dromara/
Anforderung: Alle Dokumente abfragen, deren Titel „Hi“ und Autor „Guy“ entspricht.
// 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 ();
}
Das Obige ist nur eine einfache Abfragedemonstration. Je komplexer die tatsächliche Abfrageszene ist, desto besser ist der Effekt, wodurch im Durchschnitt das Drei- bis Fünffache der Codemenge eingespart werden kann.
Neueste Version:
Easy-Es-Abhängigkeit hinzufügen
< 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 '
Mapper-Datei hinzufügen erweitert die BaseEsMapper-Schnittstelle
public interface DocumentMapper extends BaseMapper < User > {
}
Benutze es
LambdaEsQueryWrapper < Document > wrapper = new LambdaEsQueryWrapper <>();
wrapper . eq ( Document :: getTitle , "Hello World" )
. eq ( Document :: getCreator , "Guy" );
List < Document > documentList = documentMapper . selectList ();
Easy-Es führt die folgende Abfrage aus:
{ "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 }}}
Die Syntax dieser Abfrage in MySQL lautet:
SELECT * FROM document WHERE title = ' Hello World ' AND creator = ' Guy '
Dieses Schaufenster ist nur ein kleiner Teil der Easy-Es-Funktionen. Wenn Sie mehr erfahren möchten, lesen Sie bitte die Dokumentation.
MySQL | Easy-Es | Es-DSL/Es Java API |
---|---|---|
Und | Und | muss |
oder | oder | sollen |
= | Gl | Begriff |
!= | ne | boolQueryBuilder.mustNot(queryBuilder) |
> | gt | QueryBuilders.rangeQuery('es field').gt() |
>= | ge | .rangeQuery('es field').gte() |
< | lt | .rangeQuery('es field').lt() |
<= | le | .rangeQuery('es field').lte() |
wie '%field%' | wie | QueryBuilders.wildcardQuery(Feld, Wert ) |
nicht wie '%field%' | nichtGefällt mir | darf nicht wildcardQuery(field, value ) |
wie '%field' | likeLeft | QueryBuilders.wildcardQuery(field,*value) |
wie 'field%' | likeRight | QueryBuilders.wildcardQuery(field,value*) |
zwischen | zwischen | QueryBuilders.rangeQuery('es field').from(xx).to(xx) |
notBetween | notBetween | darf nicht QueryBuilders.rangeQuery('es field').from(xx).to(xx) |
ist null | istNull | Darf nicht QueryBuilders.existsQuery(field) |
ist nichtNull | isNotNull | QueryBuilders.existsQuery(field) |
In | In | QueryBuilders.termsQuery(" xx es field", xx) |
nicht drin | nichtIn | Darf nicht QueryBuilders.termsQuery(" xx es field", xx) |
gruppieren nach | groupBy | AggregationBuilders.terms() |
Bestellen nach | orderBy | fieldSortBuilder.order(ASC/DESC) |
min | min | AggregationBuilders.min |
max | max | AggregationBuilders.max |
Durchschn | Durchschn | AggregationBuilders.avg |
Summe | Summe | AggregationBuilders.sum |
Reihenfolge nach xxx aufsteigend | orderByAsc | fieldSortBuilder.order(SortOrder.ASC) |
Sortierung nach xxx abz | orderByDesc | fieldSortBuilder.order(SortOrder.DESC) |
- | übereinstimmen | matchQuery |
- | matchPhrase | QueryBuilders.matchPhraseQuery |
- | matchPrefix | QueryBuilders.matchPhrasePrefixQuery |
- | queryStringQuery | QueryBuilders.queryStringQuery |
wählen * | matchAllQuery | QueryBuilders.matchAllQuery() |
- | highLight | HighlightBuilder.Field |
... | ... | ... |
Spenden Sie Easy-Es
Easy-Es steht unter der Apache 2.0-Lizenz. Weitere Informationen finden Sie in der Apache-Lizenz 2.0-Datei.