Рожденный для упрощения разработки
Easy-Es — это мощно расширенный набор инструментов RestHighLevelClient для упрощения разработки. Этот набор инструментов предоставляет некоторые эффективные, полезные и готовые функции для ElasticSearch. Используя Easy-Es, вы можете использовать синтаксис MySQL для выполнения запросов Es. Его использование может эффективно сэкономить время разработки.
сайт easy-es https://en.easy-es.cn/
простой git-код 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/
Требование: запросить все документы, заголовок которых равен «Привет», а автор — «Парень».
// 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 | Easy-Es | Es-DSL/Es Java API |
---|---|---|
и | и | должен |
или | или | должен |
= | экв. | срок |
!= | пе | boolQueryBuilder.mustNot(queryBuilder) |
> | гт | QueryBuilders.rangeQuery('es field').gt() |
>= | ге | .rangeQuery('es поле').gte() |
< | лт | .rangeQuery('es поле').lt() |
<= | ле | .rangeQuery('es поле').lte() |
например '%field%' | нравиться | QueryBuilders.wildcardQuery(поле, значение ) |
не похоже на «%field%» | не нравится | не должен подстановочный запрос(поле, значение ) |
как '%field' | нравитсяслева | QueryBuilders.wildcardQuery(поле,*значение) |
как «поле%» | нравитсяВерно | QueryBuilders.wildcardQuery(поле,значение*) |
между | между | QueryBuilders.rangeQuery('es field').from(xx).to(xx) |
немежду | немежду | не должен QueryBuilders.rangeQuery('es field').from(xx).to(xx) |
является нулевым | isNull | не должно быть QueryBuilders.existsQuery(поле) |
не является нулевым | isNotNull | QueryBuilders.existsQuery(поле) |
в | в | QueryBuilders.termsQuery(" xx это поле", xx) |
не в | неВ | не должен QueryBuilders.termsQuery(" xx es field", xx) |
группировать по | группаПо | AggregationBuilders.terms() |
заказать по | заказать по | fieldSortBuilder.order(ASC/DESC) |
мин | мин | AggregationBuilders.min |
Макс | Макс | AggregationBuilders.max |
среднее | среднее | AggregationBuilders.avg |
сумма | сумма | AggregationBuilders.sum |
заказать по ххх по возрастанию | заказ по возрастанию | полеSortBuilder.order(SortOrder.ASC) |
заказать по ххх убыванию | OrderByDesc | полеSortBuilder.order(SortOrder.DESC) |
- | соответствовать | matchQuery |
- | matchPrase | QueryBuilders.matchPhraseQuery |
- | matchPrefix | QueryBuilders.matchPhrasePrefixQuery |
- | запросStringQuery | QueryBuilders.queryStringQuery |
выбирать * | matchAllQuery | QueryBuilders.matchAllQuery() |
- | выделять | HighlightBuilder.Field |
... | ... | ... |
Пожертвовать Easy-Es
Easy-Es находится под лицензией Apache 2.0. Подробности см. в файле лицензии Apache 2.0.