Elasticsearch Выберите определенные поля

Elasticsearch Vyberite Opredelennye Pola



Elasticsearch по умолчанию возвращает все поля в документе при выполнении поискового запроса. Это определяется параметром _source, который содержит все данные, сохраненные в записи во время индексации.

curl -XGET 'http://localhost:9200/netflix/_doc/HXYz_IIBLbuC0z3qKeN2?pretty' -H 'kbn-xsrf: отчетность'

Выход:







Однако вы можете не захотеть извлекать все поля из данного документа. В этом руководстве вы узнаете, как выбрать определенные поля из документа.



Вариант полей Elasticsearch

Параметр fields позволяет нам получать определенные поля в поисковом запросе. Кроме того, параметр поля позволит нам получить одно или несколько полей. Вы также можете форматировать даты и типы пространственных данных, используя параметр fields.



Например, предположим, что мы хотим получить поля индекса, идентификатора, названия, выпуска_года, списка, продолжительности и рейтинга из индекса Netflix, мы можем запустить запрос, как показано ниже:





curl -XGET 'http://localhost/netflix/_search' -H 'kbn-xsrf: отчетность' -H 'Тип контента: приложение/json' -d'
{
'запрос': {
'соответствие': {
'_id': 'HXYz_IIBLbuC0z3qKeN2'
}
},
'поля': [
'индекс',
'я бы',
'заглавие',
'год_выпуска',
'перечислены в',
'продолжительность',
'рейтинг'
],
'_источник': ложь

}'

В приведенном выше запросе мы используем поисковый API для поиска документа с указанным идентификатором в параметре match.

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



Обратите внимание, что Elasticsearch по умолчанию включает параметр _source, состоящий из всех полей документа. Чтобы убедиться, что мы извлекаем только указанные поля, мы отключаем параметр _source:

Приведенный выше запрос должен вернуть ответ, как показано ниже:

{
'взял': 1,
'timed_out': ложь,
'_осколки': {
'всего': 1,
'успешно': 1,
'пропущено': 0,
'неудачно': 0
},
'хиты': {
'общий': {
'значение': 1,
'отношение': 'экв'
},
'max_score': 1,
'хиты': [
{
'_index': 'нетфликс',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'поля': {
'перечислены в': [
«Документальные фильмы»
],
'продолжительность': [
'90 мин'
],
'год_релиза': [
2020
],
'рейтинг': [
'ПГ-13'
],
'заглавие': [
«Дик Джонсон мертв»
]
}
}
]
}
}

Вы также можете использовать параметр _source, чтобы определить, какие поля возвращать из поискового запроса. Пример показан ниже:

curl -XGET 'http://localhost:9200/netflix/_search' -H 'kbn-xsrf: отчетность' -H 'Тип контента: приложение/json' -d'
{
'_source': ['название', 'год_релиза', 'рейтинг', 'длительность'],
'запрос': {
'срок': {
'_я бы': {
'значение': 'HXYz_IIBLbuC0z3qKeN2'
}
}
}

}'

В этом случае мы указываем поля, которые хотим получить, в виде массива в исходном параметре. Приведенный выше запрос должен вернуть ответ, как показано ниже:

{
'взял': 0,
'timed_out': ложь,
'_осколки': {
'всего': 1,
'успешно': 1,
'пропущено': 0,
'неудачно': 0
},
'хиты': {
'общий': {
'значение': 1,
'отношение': 'экв'
},
'max_score': 1,
'хиты': [
{
'_index': 'нетфликс',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'_источник': {
'продолжительность': '90 мин',
'год_выпуска': 2020,
'рейтинг': 'PG-13',
'title': 'Дик Джонсон мертв'
}
}
]
}

}

Вывод

В этой статье вы узнали, как получить определенные поля из поискового запроса, используя параметры fields и _source.

Чтобы узнать больше об Elasticsearch и его возможностях, ознакомьтесь с нашими руководствами по этой теме. Вы гарантированно найдете что-то полезное.

Спасибо за чтение и Увидимся в следующем!!