Elasticsearch Изберете конкретни полета

Elasticsearch Izberete Konkretni Poleta



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) за търсене, за да търсим в документа с посочения идентификатор в параметъра за съвпадение.

След това използваме параметъра fields, за да извлечем конкретните полета от целевия документ.



Имайте предвид, че Elasticsearch по подразбиране ще включва параметъра _source, състоящ се от всички полета на документа. За да сме сигурни, че извличаме само посочените полета, изключваме параметъра _source:

Заявката по-горе трябва да върне отговор, както е показано:

{
'взе': 1,
'изчакване': невярно,
'_shards': {
'общо': 1,
'успешно': 1,
'пропуснат': 0,
'неуспешно': 0
},
'хитове': {
'обща сума': {
'стойност': 1,
'отношение': 'eq'
},
'max_score': 1,
'хитове': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'полета': {
'listed_in': [
'Документални филми'
],
'продължителност': [
'90 минути'
],
'release_year': [
2020 г
],
'рейтинг': [
'PG-13'
],
'заглавие': [
'Дик Джонсън е мъртъв'
]
}
}
]
}
}

Можете също така да използвате параметъра _source, за да определите кои полета да се върнат от заявка за търсене. По-долу е показан пример:

curl -XGET 'http://localhost:9200/netflix/_search' -H 'kbn-xsrf: отчитане' -H 'Тип съдържание: приложение/json' -d'
{
'_source': ['title', 'release_year', 'rating', 'duration'],
'заявка': {
'термин': {
'_документ за самоличност': {
'стойност': 'HXYz_IIBLbuC0z3qKeN2'
}
}
}

}'

В този случай ние посочваме полетата, които искаме да извлечем като масив в параметъра източник. Заявката по-горе трябва да върне отговора, както е показано:

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

}

Заключение

В тази статия научихте как да извличате конкретни полета от заявка за търсене, като използвате полетата и параметрите _source.

За да научите повече за Elasticsearch и неговите възможности, разгледайте нашите уроци по темата. Гарантирано ще намерите нещо полезно.

Благодаря за четенето и ще се видим в следващия!!