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

OSCHINA-MIRROR/bakerzhu-fast-search

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Поиск

Поиск — это простой 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 )

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

Введение

Search проект основан на ElasticSearch, предоставляет упрощённый вызов API для поиска. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
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