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

OSCHINA-MIRROR/bakerzhu-fast-search

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 6.9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 23:40 e484874

Поиск

Поиск — это простой API-вызов на основе сервиса ElasticSearch, который поддерживает следующие функции:

  • индексация данных;
  • обновление данных (UpdateById/UpdateByQuery);
  • пакетная обработка данных (добавление, удаление и изменение);
  • маршрутизация (routing);
  • предложение запроса (Suggest);
  • запрос с использованием шаблонов Mustache;
  • удаление данных (DeleteById/DeleteByQuery/DeleteByType).

Функции поиска

Функции поиска поддерживают базовые логические запросы:

  1. «& | !» — логические операторы;
  2. вложенные «& |!» — логические операции;
  3. EQL-запросы (пользовательские SQL-запросы);
  4. агрегатные запросы.

Каждый простой тип данных в запросе поддерживает:

  1. {term: 中国西域} — точный поиск;
  2. {match: 中国西域} — соответствие (с поддержкой разделения по словам);
  3. {prefix: 中国西域} — префиксный поиск;
  4. {wildcard: W?F*HW} — поиск по шаблону;
  5. {regexp: W[0-9].+} — регулярное выражение.

Правила SQL-запросов

Концепция: поисковый блок — используется для поиска «одного» логического блока, заключённого в круглые скобки. Каждый блок представляет собой сравнение поля. Форма записи: (field: value). Примеры: — (a: 1) — сравнение одного поля; — (1 < a < 10) — сравнение нескольких полей; — (a > 5 & a < 10) — также сравнение нескольких полей.

Функция: функция анализа использует фигурные скобки для анализа (если не используется функция анализа, то считается, что это запрос термина). Форма записи: {term: 中国西域}. Функции анализа: — {term: 中国西域} — запрос термина; — {match: 中国西域} — сопоставление (поддерживает разделение по словам); — {prefix: 中国西域} — префиксный запрос; — {wildcard: W?FHW} — шаблонный запрос; — {regexp: W[0-9].+} — регулярный запрос. Пример: Node: supplierName: {wildcard: 北京商贸} — запрос информации, связанной с «北京商贸», из базы данных.

Диапазон запросов: диапазон запросов абстрагируется от обработки на стороне сервера, поддерживая произвольные принципы открытия и закрытия и диапазон запросов. Поддерживаются основные типы данных и диапазоны дат. Форма записи: (value1 < field <= value2), (field < v2), (field < v2). Пример: диапазон закрытых запросов гарантирует, что поле находится между значениями: v1 < field <v2. Диапазон открытых запросов гарантирует, что поле находится слева от значения: field > v1 или field < v2. Запросы диапазона дат используют формат даты «yyyy-MM-dd HH:mm:ss».

Отрицательный запрос: используется для инвертирования условий, может использоваться только перед запросом. Обозначается символом «!». Форма записи: !(a <= 10), !(a:1|2|3)&(b:zhangsan). Пример: !(a <10) = (a >=10).

Логические операторы: используются для логических операций «и» или «или» в блоке, обозначаются символами «&» и «|». Форма записи: !(a <= 10), !(&(a:1|2|3)&(b: zhangsan)). Пример: !(a <10) = (a >=10).

Примеры поисковых запросов

Точное соответствие: (supplierId: 2241527253818753). Однополевые или запросы: — (cityId: 1|18|241); — !(cityId: 1|18|241). Простой диапазон запросов: — (goodsStorage > 1 000 000 000); — (goodsStorage <= 10); — (goodsStorage <= 10 | goodsStorage > 1 000 000 000); — !(goodsStorage <= 10 | goodsStorage > 1 000 000 000) эквивалентно (10 < goodsStorage <= 1 000 000 000). Запросы диапазона дат: yyyy-MM-dd HH:mm:ss. — (createTime < 2018-05-15 00:00:00); — (createTime gt;= 2018-05-15 00:00:00); — !(createTime <= 2018-05-15 00:00:00); — (createTime <= 2018-05-15 00:00:00 | createTime > 2018-06-15 00:00:00); — !(createTime <= 2018-05-15 00:00:00 | createTime > 2018-06-15 00:00:00) равно (2018-05-15 00:00:00 < createTime <= 2018-06-15 00:00:00). Запрос функции: — (supplierName: {prefix: тестирование}) — префикс; — (supplierName: {wildcard: тестирование*}) — шаблон; — (supplierName: {regexp:[^Baker]+ тестирование.*}) — регулярное выражение. Комбинированный запрос: — (&(2018-05-15 00:00:00 <= createTime <= 2018-06-15 00:00:00)&(goodsStorage < 1 000)); — !(&(2018-05-15 00:00:00 <= createTime <= 2018-06-15 00:00:00)&(goodsStorage < 1 000)); — (&(2018-05-15 00:00:00 <= createTime <= 2018-06-15 00:00:00)&(goodsStorage < 1 000)&(supplierId:2241527253818753)); — !(supplierName:{regexp:[^Baker]+ тестирование.}); — (&(supplierName:{regexp:[^Baker]+ тестирование.})|!(5 < goodsNum < 25)); — &!(&(supplierName:{regexp:[^Baker]+ тестирование.})|!(5 < goodsNum < 25)). ``` boolPager.set_index(dto.getIndexName().trim()); boolPager.set_type(dto.getIndexType().trim()); if (StringUtils.isNotBlank(dto.getSortName())) { if ("desc".equals(dto.getSortOrder())) { sortField.put(dto.getSortName().trim(), SearchFactor.DESC); } else { sortField.put(dto.getSortName().trim(), SearchFactor.ASC); } boolPager.setSortFields(sortField); } BoolPager resultPager = BaseSearch.boolQuery(transportClient, boolPager); System.out.println(resultPager.getResult());


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

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

1
https://api.gitlife.ru/oschina-mirror/bakerzhu-fast-search.git
git@api.gitlife.ru:oschina-mirror/bakerzhu-fast-search.git
oschina-mirror
bakerzhu-fast-search
bakerzhu-fast-search
master