Nascido para simplificar o desenvolvimento
Easy-Es é um kit de ferramentas poderosamente aprimorado de RestHighLevelClient para simplificar o desenvolvimento. Este kit de ferramentas fornece alguns recursos eficientes, úteis e prontos para uso para ElasticSearch. Usando Easy-Es, você pode usar a sintaxe MySQL para completar consultas Es. Usá-lo pode economizar efetivamente seu tempo de desenvolvimento.
site easy-es https://en.easy-es.cn/
código git easy-es https://gitcode.com/dromara/easy-es
turismo rural easy-es https://gitee.com/dromara/easy-es
easy-es github https://github.com/dromara/easy-es
site da dromara https://dromara.org/
página inicial do dromara gitee https://gitee.com/dromara/
Demanda: Consultar todos os documentos com título igual a “Oi” e autor igual a “Cara”
// 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 ();
}
O texto acima é apenas uma demonstração de consulta simples. Quanto mais complexa for a cena de consulta real, melhor será o efeito, que pode economizar de 3 a 5 vezes a quantidade de código, em média.
Versão mais recente:
Adicionar dependência 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 '
Adicionar arquivo mapeador estende a interface BaseEsMapper
public interface DocumentMapper extends BaseMapper < User > {
}
Use-o
LambdaEsQueryWrapper < Document > wrapper = new LambdaEsQueryWrapper <>();
wrapper . eq ( Document :: getTitle , "Hello World" )
. eq ( Document :: getCreator , "Guy" );
List < Document > documentList = documentMapper . selectList ();
Easy-Es executará a seguinte consulta:
{ "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 }}}
A sintaxe desta consulta no MySQL é:
SELECT * FROM document WHERE title = ' Hello World ' AND creator = ' Guy '
Esta vitrine é apenas uma pequena parte dos recursos do Easy-E. Se você quiser saber mais, consulte a documentação.
MySQL | Fácil-Es | API Java Es-DSL/Es |
---|---|---|
e | e | deve |
ou | ou | deve |
= | equação | prazo |
!= | não | boolQueryBuilder.mustNot(queryBuilder) |
> | gt | QueryBuilders.rangeQuery('es campo').gt() |
>= | ge | .rangeQuery('es campo').gte() |
< | isso | .rangeQuery('es campo').lt() |
<= | ele | .rangeQuery('es campo').lte() |
como '%campo%' | como | QueryBuilders.wildcardQuery(campo, valor ) |
não é como '%campo%' | não gosto | não deve curingaQuery(campo, valor ) |
como '%campo' | curtirEsquerda | QueryBuilders.wildcardQuery(campo,*valor) |
como 'campo%' | gostarCerto | QueryBuilders.wildcardQuery(campo,valor*) |
entre | entre | QueryBuilders.rangeQuery('es campo').from(xx).to(xx) |
não entre | não entre | não deve QueryBuilders.rangeQuery('es field').from(xx).to(xx) |
é nulo | éNulo | não deve QueryBuilders.existsQuery (campo) |
não é nulo | isNotNull | QueryBuilders.existsQuery(campo) |
em | em | QueryBuilders.termsQuery("campo xx es", xx) |
não em | nãoIn | não deve QueryBuilders.termsQuery(" xx es campo", xx) |
agrupar por | grupoBy | AggregationBuilders.terms() |
encomendar por | encomendar por | fieldSortBuilder.order(ASC/DESC) |
min | min | AggregationBuilders.min |
máx. | máx. | AggregationBuilders.max |
média | média | AggregationBuilders.avg |
soma | soma | AggregationBuilders.sum |
encomendar por xxx asc | pedidoByAsc | fieldSortBuilder.order(SortOrder.ASC) |
encomendar por xxx desc | encomendarByDesc | fieldSortBuilder.order(SortOrder.DESC) |
- | corresponder | matchQuery |
- | frase de correspondência | QueryBuilders.matchPhraseQuery |
- | matchPrefix | QueryBuilders.matchPhrasePrefixQuery |
- | queryStringQuery | QueryBuilders.queryStringQuery |
selecione * | combinarAllQuery | QueryBuilders.matchAllQuery() |
- | destaque | DestaqueBuilder.Field |
... | ... | ... |
Doe Easy-Es
Easy-Es está sob a licença Apache 2.0. Consulte o arquivo Apache License 2.0 para obter detalhes.