Né pour simplifier le développement
Easy-Es est une boîte à outils puissamment améliorée de RestHighLevelClient pour simplifier le développement. Cette boîte à outils fournit des fonctionnalités efficaces, utiles et prêtes à l'emploi pour ElasticSearch. En utilisant Easy-Es, vous pouvez utiliser la syntaxe MySQL pour compléter les requêtes Es. Son utilisation peut effectivement vous faire gagner du temps de développement.
Site Web easy-es https://en.easy-es.cn/
easy-es gitcode https://gitcode.com/dromara/easy-es
gîte easy-es https://gitee.com/dromara/easy-es
facile-es github https://github.com/dromara/easy-es
Site Web de Dromara https://dromara.org/
Page d'accueil du gîte dromara https://gitee.com/dromara/
Demande : interrogez tous les documents dont le titre est égal à "Salut" et l'auteur est égal à "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 ();
}
Ce qui précède n’est qu’une simple démonstration de requête. Plus la scène de requête réelle est complexe, meilleur est l'effet, qui peut permettre d'économiser 3 à 5 fois la quantité de code en moyenne.
Dernière version :
Ajouter une dépendance 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 '
L'ajout d'un fichier mappeur étend l'interface BaseEsMapper
public interface DocumentMapper extends BaseMapper < User > {
}
Utilisez-le
LambdaEsQueryWrapper < Document > wrapper = new LambdaEsQueryWrapper <>();
wrapper . eq ( Document :: getTitle , "Hello World" )
. eq ( Document :: getCreator , "Guy" );
List < Document > documentList = documentMapper . selectList ();
Easy-Es exécutera la requête suivante :
{ "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 }}}
La syntaxe de cette requête dans MySQL est :
SELECT * FROM document WHERE title = ' Hello World ' AND creator = ' Guy '
Cette vitrine n'est qu'une petite partie des fonctionnalités d'Easy-Es. Si vous souhaitez en savoir plus, veuillez vous référer à la documentation.
MySQL | Facile-Es | API Java Es-DSL/Es |
---|---|---|
et | et | doit |
ou | ou | devrait |
= | équip | terme |
!= | ne | boolQueryBuilder.mustNot(queryBuilder) |
> | GT | QueryBuilders.rangeQuery('es field').gt() |
>= | ge | .rangeQuery('es field').gte() |
< | lt | .rangeQuery('es field').lt() |
<= | le | .rangeQuery('champ').lte() |
comme '%field%' | comme | QueryBuilders.wildcardQuery(champ, valeur ) |
pas comme '%field%' | pas comme | ne doit pas wildcardQuery (champ, valeur ) |
comme '%champ' | commeGauche | QueryBuilders.wildcardQuery(champ,*valeur) |
comme 'champ%' | j'aime bien | QueryBuilders.wildcardQuery(champ,valeur*) |
entre | entre | QueryBuilders.rangeQuery('champ es').from(xx).to(xx) |
pasEntre | pasEntre | ne doit pas QueryBuilders.rangeQuery('es field').from(xx).to(xx) |
est nul | estNull | ne doit pas QueryBuilders.existsQuery(field) |
n'est pas nul | estNotNull | QueryBuilders.existsQuery(champ) |
dans | dans | QueryBuilders.termsQuery("champ xx es", xx) |
pas dans | pas dans | ne doit pas QueryBuilders.termsQuery(" xx es field", xx) |
regrouper par | groupePar | AggregationBuilders.terms() |
commander par | commandePar | fieldSortBuilder.order(ASC/DESC) |
min | min | AggregationBuilders.min |
maximum | maximum | AggregationBuilders.max |
moyenne | moyenne | AggregationBuilders.avg |
somme | somme | AggregationBuilders.sum |
commander par xxx asc | commandeParAsc | fieldSortBuilder.order(SortOrder.ASC) |
commander par xxx desc | commandeParDesc | fieldSortBuilder.order(SortOrder.DESC) |
- | correspondre | matchQuery |
- | Phrase de correspondance | QueryBuilders.matchPhraseQuery |
- | matchPrefix | QueryBuilders.matchPhrasePrefixQuery |
- | requêteChaîneRequête | QueryBuilders.queryStringQuery |
sélectionner * | matchAllQuery | QueryBuilders.matchAllQuery() |
- | souligner | HighlightBuilder.Field |
... | ... | ... |
Faites un don
Easy-Es est sous licence Apache 2.0. Consultez le fichier Apache License 2.0 pour plus de détails.