Создан для упрощения разработки
Easy-Es — это мощно улучшенный набор инструментов для RestHighLevelClient, который позволяет упрощать разработку. Этот набор инструментов предоставляет некоторые эффективные и полезные возможности для работы с Elasticsearch. Используя Easy-Es, вы можете использовать синтаксис MySQL для выполнения запросов к Elasticsearch. Это значительно экономит ваше время разработки.
Официальный сайт easy-es https://ru.easy-es.cn/
Проект easy-es на Gitee https://gitee.com/dromara/easy-es
Проект easy-es на GitHub https://github.com/dromara/easy-es
Официальный сайт dromara https://dromara.org/
Главная страница проекта dromara на Gitee https://gitee.com/dromara/
---- Автоматическое создание и обновление индексов, автоматическая миграция данных и обработка нулевых пространств
Требование: Выполнить поиск всех документов с заголовком "Hi" и автором "Guy".
// Использование Easy-Es для выполнения запроса всего за три строки кода
LambdaEsQueryWrapper<Document> wrapper = new LambdaEsQueryWrapper<>();
wrapper.eq(Document::getTitle, "Hi").eq(Document::getCreator, "Guy");
List<Document> documents = documentMapper.selectList(wrapper);
// Запрос с использованием RestHighLevelClient требует 11 строк кода, не включая парсинг JSON-кода
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);
// Затем парсим DocumentList из searchResponse различными способами, пропуская эти коды...
} catch (IOException e) {
e.printStackTrace();
}
Приведённый выше пример демонстрирует простой запрос. Чем сложнее реальная сцена запроса, тем лучше эффект, что позволяет сэкономить от 3 до 5 раз объёма кода в среднем.
---- Добавьте зависимость Easy-Es
- Последняя версия:
- Maven:
xml <dependency> <groupId>org.dromara.easy-es</groupId> <artifactId>easy-es-boot-starter</artifactId> <version>Последняя Версия</version> </dependency>
- Gradle
groovy compile group: 'org.dromara.easy-es', name: 'easy-es-boot-starter', version: 'Последняя Версия'
LambdaEsQueryWrapper<Document> wrapper = new LambdaEsQueryWrapper<>();
wrapper.eq(Document::getTitle, "Привет, мир!")
.eq(Document::getCreator, "Гай");
List<Document> documentList = documentMapper.selectList();
{"query":{"bool":{"must":[{"term":{"title":{"value":"Привет, мир!","boost":1.0}}},{"term":{"creator":{"value":"Гай","boost":1.0}}}],"adjust_pure_negative":true,"boost":1.0}}}
SELECT * FROM document WHERE title = 'Привет, мир!' AND creator = 'Гай'
Это демонстрация является лишь небольшой частью возможностей Easy-Es. Если вы хотите узнать больше, пожалуйста, обратитесь к документации.
---| MySQL | Easy-Es | Es-DSL/Es Java API| | --- | --- |--- | | AND | and | must | | OR | or | should | | = | eq | term | | != | 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() | | LIKE '%field%' | like | QueryBuilders.wildcardQuery(field, value) | | NOT LIKE '%field%' | notLike | must not wildcardQuery(field, value) | | LIKE '%field' | likeLeft | QueryBuilders.wildcardQuery(field, value) | | LIKE 'field%' | likeRight | QueryBuilders.wildcardQuery(field, value*) | | BETWEEN | between | QueryBuilders.rangeQuery('es field').from(xx).to(xx) | | NOT BETWEEN | notBetween | must not QueryBuilders.rangeQuery('es field').from(xx).to(xx) | | IS NULL | isNull | must not QueryBuilders.existsQuery(field) | | IS NOT NULL | isNotNull | QueryBuilders.existsQuery(field) | | IN | in | QueryBuilders.termsQuery("xx es field", xx) | | NOT IN | notIn | must not QueryBuilders.termsQuery("xx es field", xx) | | GROUP BY | groupBy | AggregationBuilders.terms() | | ORDER BY | orderBy | fieldSortBuilder.order(ASC/DESC) | | MIN | min | AggregationBuilders.min | | MAX | max | AggregationBuilders.max | | AVG | avg | AggregationBuilders.avg | | SUM | sum | AggregationBuilders.sum | | ORDER BY xxx ASC | orderByAsc | fieldSortBuilder.order(SortOrder.ASC) | | ORDER BY xxx DESC | orderByDesc | fieldSortBuilder.order(SortOrder.DESC) | | - | match | matchQuery | | - | matchPhrase | QueryBuilders.matchPhraseQuery | | - | matchPrefix | QueryBuilders.matchPhrasePrefixQuery | | - | queryStringQuery | QueryBuilders.queryStringQuery | | SELECT * | matchAllQuery | QueryBuilders.matchAllQuery() | | - | highlight | HighlightBuilder.Field | | ... | ... | ... |
Easy-Es находится под лицензией Apache 2.0. Подробнее см. файл Apache License 2.0.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )