Сообщения

Агрегации в Elasticsearch

Изображение
Агрегирование суммирует ваши данные в виде показателей, статистики или другой аналитики. Агрегации помогут вам ответить на такие вопросы, как: Каково среднее время загрузки моего веб-сайта? Кто мои самые ценные клиенты с учетом объема транзакций? Что будет считаться большим файлом в моей сети? Сколько товаров находится в каждой товарной категории? Elasticsearch разбивает агрегаты на три категории: Агрегаты показателей, которые вычисляют показатели, такие как сумма или среднее значение, на основе значений полей. Агрегаты сегментов, которые группируют документы в сегменты (buckets), также называемые ячейками (bins), на основе значений полей, диапазонов или других критериев. Конвейерные агрегаты, которые принимают входные данные из других агрегатов вместо документов или полей. Запустить агрегацию Вы можете запускать агрегаты как часть поиска, указав параметр aggs API поиска. Следующий поиск запускает агрегацию терминов в my-field: GET /my-index-000001/_search { "a...

Запросы на уровне термина в Elasticsearch: запрос набора терминов (terms_set)

Изображение
Возвращает документы, содержащие минимальное количество точных терминов в указанном поле. Запрос terms_set аналогичен запросу terms, за исключением того, что вы можете определить количество совпадающих терминов, необходимых для возврата документа. Например: Поле programming_languages содержит список известных языков программирования, таких как c++, java или php для кандидатов на работу. Вы можете использовать запрос terms_set для возврата документов, которые соответствуют как минимум двум из этих языков. Поле permissions содержит список возможных разрешений пользователя для приложения. Вы можете использовать запрос terms_set для возврата документов, которые соответствуют подмножеству этих разрешений. Пример запроса Настройка индекса В большинстве случаев вам нужно будет включить отображение числового поля в свой индекс, чтобы использовать запрос terms_set. Это числовое поле содержит количество совпадающих терминов, необходимых для возврата документа. Чтобы узнать, как настроит...

Запросы на уровне термина в Elasticsearch: terms запрос

Изображение
Возвращает документы, содержащие один или несколько точных терминов в указанном поле. Запрос terms такой же, как term запрос, за исключением того, что вы можете искать несколько значений. Пример запроса Следующий поиск возвращает документы, в которых поле user.id содержит kimchy или elkbee. GET /_search { "query": { "terms": { "user.id": [ "kimchy", "elkbee" ], "boost": 1.0 } } } Параметры верхнего уровня для terms запроса field (Обязательный, объект) Поле для поиска. Значение этого параметра представляет собой массив терминов, которые вы хотите найти в указанном поле. Чтобы вернуть документ, один или несколько терминов должны точно соответствовать значению поля, включая пробелы и заглавные буквы. По умолчанию Elasticsearch ограничивает количество запросов до 65536 терминов. Вы можете изменить это ограничение с помощью параметра index.max_terms_count. Чтобы использовать значения полей сущ...

Запросы на уровне термина в Elasticsearch: term запрос

Изображение
Возвращает документы, содержащие точный термин в указанном поле. Вы можете использовать term запрос для поиска документов на основе точного значения, такого как цена, идентификатор продукта или имя пользователя. Избегайте использования term запроса для текстовых полей. По умолчанию Elasticsearch изменяет значения текстовых полей как часть анализа. Это может затруднить поиск точных совпадений для значений текстовых полей. Для поиска значений текстового поля используйте вместо этого match запрос. Пример запроса GET /_search { "query": { "term": { "user.id": { "value": "cat", "boost": 1.0 } } } } Параметры верхнего уровня для term запроса field (Обязательный, объект) Поле для поиска. Параметры для field value (Обязательный, строка) Термин, который вы хотите найти в указанном поле field. Чтобы вернуть документ, термин должен точно соответствовать значению поля, включая пробе...

Запросы на уровне термина в Elasticsearch: fuzzy запрос

Изображение
Возвращает документы, содержащие термины, похожие на поисковый запрос, измеряемый расстоянием редактирования Левенштейна. Расстояние редактирования - это количество изменений одного символа, необходимых для преобразования одного термина в другой. Эти изменения могут включать: Смена символа (box → fox) Удаление символа (black → lack) Вставка символа (sic → sick) Перемещение двух соседних символов (act → cat) Чтобы найти похожие термины, fuzzy запрос создает набор всех возможных вариантов или расширений поискового термина в пределах указанного расстояния редактирования. Затем запрос возвращает точные совпадения для каждого раскрытия. Примеры запросов Простой запрос GET /_search { "query": { "fuzzy": { "user.id": { "value": "act" } } } } Пример использования дополнительных параметров GET /_search { "query": { "fuzzy": { "user.id": { ...

Запросы на уровне термина в Elasticsearch: exists запрос

Изображение
Возвращает документы, содержащие индексированное значение для поля. Индексированное значение может не существовать для поля документа по ряду причин: Поле в исходном JSON равно null или [] Поле имеет "index" : false установленное в сопоставлении (mapping) Длина значения поля превышает параметр ignore_above в сопоставлении (mapping) Значение поля было искажено, и в сопоставлении (mapping) было определено ignore_malformed GET /_search { "query": { "exists": { "field": "user" } } } Параметры верхнего уровня для exists field (Обязательный, строка) Имя поля, в котором вы хотите выполнить поиск. Хотя поле считается несуществующим, если значение JSON равно null или [], эти значения будут указывать на то, что поле действительно существует: Пустые строки, такие как "" или "-" Массивы, содержащие null и другое значение, например [null, "foo"] Пользовательское нулевое значение, о...

Запросы на уровне термина в Elasticsearch

Изображение
Вы можете использовать запросы на уровне терминов для поиска документов на основе точных значений в структурированных данных. Примеры структурированных данных включают диапазоны дат, IP-адреса, цены или идентификаторы продуктов. В отличие от полнотекстовых запросов, запросы на уровне терминов не анализируют условия поиска. Вместо этого запросы на уровне терминов соответствуют точным терминам, хранящимся в поле. Запросы на уровне терминов по-прежнему нормализуют условия поиска для полей ключевых слов с помощью свойства normalizer. Типы запросов на уровне терминов exists запрос Возвращает документы, содержащие любое проиндексированное значение для поля. fuzzy запрос Возвращает документы, содержащие термины, похожие на поисковый запрос. Elasticsearch измеряет сходство или нечеткость, используя расстояние редактирования Левенштейна. ids запрос Возвращает документы на основе их идентификаторов документов. prefix запрос Возвращает документы, содержащие определенный префикс в у...