1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dromara-easy-es

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_EN.md 9.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 11.03.2025 01:05 531b26e

East-Es-Logo

Создан для упрощения разработки

maven code style

Что такое Easy-Es?


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/

Ссылки


Возможности

---- Автоматическое создание и обновление индексов, автоматическая миграция данных и обработка нулевых пространств

  • Автоматическая конфигурация при запуске
  • Внешние интерфейсы для управления Elasticsearch
  • Мощный и гибкий обертка условий WHERE
  • API в стиле лямбда-выражений
  • Автоматическое управление пагинацией
  • Поддержка высокого уровня синтаксиса, таких как выделение и весовые коэффициенты, а также Geo и т.д.
  • ...## Сравнение

Требование: Выполнить поиск всех документов с заголовком "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 Central - 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: 'Последняя Версия'

  • Добавьте файл маппера, расширяющий интерфейс BaseEsMapper ```java public interface DocumentMapper extends BaseMapper { }
  • Используйте его
    LambdaEsQueryWrapper<Document> wrapper = new LambdaEsQueryWrapper<>();
    wrapper.eq(Document::getTitle, "Привет, мир!")
           .eq(Document::getCreator, "Гай");
    List<Document> documentList = documentMapper.selectList();
    
    Easy-Es выполнит следующий запрос:
    {"query":{"bool":{"must":[{"term":{"title":{"value":"Привет, мир!","boost":1.0}}},{"term":{"creator":{"value":"Гай","boost":1.0}}}],"adjust_pure_negative":true,"boost":1.0}}}
    Синтаксис этого запроса в MySQL:
      SELECT * FROM document WHERE title = 'Привет, мир!' AND creator = 'Гай'

Это демонстрация является лишь небольшой частью возможностей Easy-Es. Если вы хотите узнать больше, пожалуйста, обратитесь к документации.

Архитектура


Архитектура

Сравнение синтаксиса MySQL и 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

Лицензия


Easy-Es находится под лицензией Apache 2.0. Подробнее см. файл Apache License 2.0.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/dromara-easy-es.git
git@api.gitlife.ru:oschina-mirror/dromara-easy-es.git
oschina-mirror
dromara-easy-es
dromara-easy-es
master