Поиск
Поиск — это простой API-вызов на основе сервиса ElasticSearch, который поддерживает следующие функции:
Функции поиска
Функции поиска поддерживают базовые логические запросы:
Каждый простой тип данных в запросе поддерживает:
Правила 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 )