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

OSCHINA-MIRROR/dromara-easy-es

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

East-Es-Logo

Ваши звёзды — моя движущая сила! Если вам понравился EE, пожалуйста, помогите мне нажать звезду в правом верхнем углу ⭐!

maven code style

Официальный сайт | Official website


Официальный сайт Dromara easy-es https://easy-es.cn/

Официальная страница Dromara easy-es на Gitee https://gitee.com/dromara/easy-es

Официальная страница Dromara easy-es на GitHub https://github.com/dromara/easy-es

Официальная страница Dromara easy-es на GitCode https://gitcode.com/dromara/easy-es

Открытый союз Dromara https://dromara.org/

Главная страница открытого союза на Gitee https://gitee.com/dromara/

Скачать Easy-Es-PPT

Подсказка: Официальный сайт использует Vue.js для одностраничного приложения, и сервер расположен в США 🇺🇸, поэтому первое открытие сайта может занять некоторое время для пользователей из Китая 🐢. Пожалуйста, будьте терпеливы, и вы заметите, что последующие запросы будут быстрыми 🛡️. Если вы столкнётесь с проблемами доступа к сайту, попробуйте несколько раз обновить страницу или воспользуйтесь прокси-сервером.# Краткое описание | Intro


Easy-Es — это открытое программное обеспечение, которое упрощает работу с Elasticsearch, автоматически создавая и управляя индексами.

Функциональность, удобство использования и производительность уже значительно превышают SpringData-Elasticsearch.

Упрощение операций CRUD и других продвинутых действий позволяет разработчикам легче работать.

Основана на RestHighLevelClient, предоставляемом официальным Elasticsearch, что гарантирует её оригинальную производительность и расширяемость.

Для технического обсуждения есть группа QQ: Yöntemler için ücretsiz kollanma planları alabilirsiniz (kol koruması, kas kalınlığı kazandırma ve yağ yakma).

WeChat grubuna katılmak için, lütfen yazarla WeChat üzerinden iletişime geçin; yazar size grup eklemesini yapacaktır (fitnes sorularında da danışabilirsiniz, çünkü yazar daha önce antrenör olarak çalışmıştır).

Açık kaynak topluluğunu ileriye taşıyabilmek için, star ★, izle 🔵, forkları yapmayı unutmayın 📌; yerel açık kaynak projelerini destekleyerek daha fazla kişi bu proje hakkında bilgi sahibi olup kullanmasını sağlayın, çok teşekkür ederim!

Преимущества | Advantages


Пожалуйста, замените последний абзац на следующее:

Для технического обсуждения есть группа QQ: 897570597, где можно бесплатно получить планы тренировок для защиты шеи, набора мышечной массы и снижения жира.

Чтобы присоединиться к группе WeChat, пожалуйста, свяжитесь с автором через WeChat, он добавит вас в группу (можно также консультироваться по вопросам фитнеса, так как автор ранее был тренером).

Чтобы помочь сообществу открытого программного обеспечения двигаться дальше, пожалуйста, не забудьте сделать три действия: ⭐ Star, 👀 Watch, fork 📌 Поддержите отечественные открытые проекты, чтобы больше людей могли узнать и использовать этот проект, большое спасибо!- Автоматическое управление индексами: Первый в мире глобально открытый режим управления индексами, где разработчики не должны заботиться о создании, обновлении и миграции данных индексов. Индекс может быть полностью автоматически управляемым с помощью фреймворка; процесс проходит без простоя, пользователи ничего не замечают, что полностью освобождает разработчиков.

  • Умная типизация полей: Умная система, которая использует контекст типа индекса и текущего запроса для определения необходимости использования .keyword суффикса, что снижает вероятность ошибочного использования новичками.
  • Скрытие различий языков: Разработчики могут использовать Elasticsearch (ES) просто имея знание синтаксиса SQL для MySQL.
  • Минимальное количество кода: По сравнению с использованием RestHighLevelClient, среднее количество кода для выполнения одного и того же запроса уменьшается примерно в 3–80 раз.
  • Нулевые магические значения: Названия полей берутся непосредственно из объектов, нет необходимости указывать строки с названиями полей как магические значения.
  • Нулевые затраты на обучение: Разработчики, знающие популярный синтаксис MyBatis-Plus, могут легко перейти к Easy-Es без дополнительной подготовки.
  • Уменьшение порога входа для разработчиков: Даже начинающие разработчики, знакомые только с базовыми концепциями ES, могут легко реализовать большую часть требований.- Функциональная мощность: Поддерживает практически все функции MySQL и специфические возможности ES, такие как токенизацию, веса, выделение, вложенные данные, географические координаты Geo и запросы по IP-адресам.
  • Элегантный синтаксис: Все условные конструкции поддерживают лямбда-стиль цепочек вызовов, что значительно повышает опыт программирования и читаемость кода.
  • Безопасность и надёжность: Безопасность проверена сканером безопасности Murphy без риска, а общее покрытие тестов составляет более 95%.
  • Полные документы на русском и английском: Предоставлены двуязычные руководства по эксплуатации, содержащие полную и надёжную информацию, которая поможет вам сэкономить время.# Сравнение | Compare

Требование: найти все документы, у которых заголовок равен "традиционные боевые искусства" и автор — "Код Бао Гоу".

    // Используя Easy-Es можно выполнить поиск всего за одну строчку кода
    List<Document> documents = documentMapper.selectList(EsWrappers.lambdaQuery(Document.class).eq(Document::getTitle, "традиционные боевые искусства").eq(Document::getCreator, "Код Бао Гоу"));
    // Традиционный способ, используя RestHighLevelClient для выполнения запроса, требует 19 строк кода, не считая преобразования нижнего регистра в camelCase, обработки пользовательских полей и обработки _id
    String indexName = "document";
    SearchRequest searchRequest = new SearchRequest(indexName);
    BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
    TermQueryBuilder titleTerm = QueryBuilders.termQuery("title", "традиционные боевые искусства");
    TermsQueryBuilder creatorTerm = QueryBuilders.termsQuery("creator", "мастер Кодзюн");
    boolQueryBuilder.must(titleTerm);
    boolQueryBuilder.must(creatorTerm);
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    searchSourceBuilder.query(boolQueryBuilder);
    searchRequest.source(searchSourceBuilder);
    try {
         SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
         List<Document> documents = Optional.ofNullable(searchResponse)
                .map(SearchResponse::getHits)
                .map(SearchHits::getHits)
                .map(hit -> Document document = JSON.parseObject(hit.getSourceAsString(), Document.class))
                .collect(Collectors.toList());
        } catch (IOException e) {
            e.printStackTrace();
        }
```> * Приведённый выше пример демонстрирует простой запрос. В реальных сценариях использования сложность может значительно увеличиваться, что приводит к значительному снижению количества необходимого кода  в среднем от 3 до 80 раз.
> * Традиционные боевые искусства, достаточно было показать основное! Если вы не согласны, продолжайте "читать дальше". Вышеприведённые возможности являются лишь вершиной айсберга возможностей Easy-Es. Easy-Es действительно так просто, что это даже не по правилам 💪. Если вам не требуется данная функциональность, пожалуйста, скажите "спасибо за понимание".
># Глубинный сравнительный анализ | Deep Compare
---```java
// SQL синтаксис MySQL
WHERE business_type = 1
AND (state = 9 OR (state = 8 AND bidding_sign = 1))
OR (business_type = 2 AND state IN (2, 3));

// Синтаксис Easy-Es и Mybatis-Plus
Wrapper.eq("business_type", OnClickListener.class.getDeclaredField("mListener"))
.and(a -> a.eq("state", 9).or(b -> b.eq("state", 8).eq("bidding_sign", 1)))
.or(i -> i.eq("business_type", 2).in("state", 2, 3));

// Оригинальный синтаксис Elasticsearch RestHighLevelAPI
List<Integer> values = Arrays.asList(2, 3);
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.must(QueryBuilders.termQuery("business_type", 1));
boolQueryBuilder.must(QueryBuilders.boolQuery()
        .must(QueryBuilders.termQuery("state", 9))
        .should(QueryBuilders.boolQuery().must(QueryBuilders.termQuery("state", 8))
                .must(QueryBuilders.termQuery("bidding_sign", 1))));
boolQueryBuilder.should(QueryBuilders.boolQuery().must(QueryBuilders.termQuery("business_type", 2))
        .must(QueryBuilders.termsQuery("state", values)));

Пример выше показывает максимальную глубину дерева в 2 уровня. Если глубина превышает 2, то оригинальный синтаксис Elasticsearch становится трудноразборчивым, что затрудняет правильное кодирование. Даже опытному специалисту легко ошибиться. Однако использование Easy-Es позволяет легко и просто воспроизводить сложные SQL запросы!

Архитектура | Architecture


Архитектура

Функциональная структурная диаграмма | Functional structure diagram


Функция

Связанные ссылки | Links



Maven:

<dependency>
    <groupId>org.dromara.easy-es</groupId>
    <artifactId>easy-es-boot-starter</artifactId>
    <version>Последняя версия</version>
</dependency>

Gradle:

implementation group: 'org.dromara.easy-es', name: 'easy-es-boot-starter', version: 'Последняя версия'

О荣誉 | Honour


Easy-Es — это постоянно развивающийся и совершенствующийся открытый фреймворк. Благодарим всех за вашу поддержку и признание наших усилий со стороны различных платформ. Мы будем продолжать работать над улучшением качества нашего продукта и отблагодарим каждого из вас!

zsxq

Другие проекты | Other Projects


Наши перспективы | Our Vision


Приглашаем вас высказывать свои предложения, чтобы помочь нам усовершенствовать Easy-Es

Лицензия | License


Apache License 2.0

Об авторе | About Me


Блог CSDN

QQ | WeChat: 252645816

ЗнаниеСфера | Planet of Knowledge


zsxq

Поддержка | Donate


Запись пожертвований, спасибо за вашу поддержку!

Ваше поддержание является движущей силой нашей работы, независимо от суммы вашего пожертвования.> Если вы хотите сделать пожертвование в наш проект, рекомендуется сделать это напрямую через Gitee.

Партнеры рекламы | Advertising Providers


Наши рекламные партнеры, если вы хотите, чтобы Easy-Es продолжал развиваться, не стесняйтесь нажать на нижеприведённые ссылки и поддержите наших рекламных партнёров Thanks♪(・ω・)ノ

ad
ad
ad
ad
ad

Партнеры поддержки | Sponsors


Если вы хотите поддержать нас, но у вас недостаточно средств, ничего страшного, вы можете потратить 30 секунд на то, чтобы "украсть цветок и подарить его Будде", нажав на нижеприведённую ссылку для регистрации, после чего этот партнёр сделает небольшое пожертвование на имя сообщества разработчиков для покупки пакета лапши.

ad

Объявления | Announcements


В нашем сообществе создана эксклюзивная футболка, специально предназначенная для наших членов. Для получения более подробной информации нажмите на следующее изображение.

реклама

Опубликовать ( 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