Elasticsearch Välj specifika fält

Elasticsearch Valj Specifika Falt



Elasticsearch returnerar som standard alla fält i ett dokument när en sökfråga utförs. Detta definieras av parametern _source, som innehåller all data som lagras i posten under indexeringen.

curl -XGET 'http://localhost:9200/netflix/_doc/HXYz_IIBLbuC0z3qKeN2?pretty' -H 'kbn-xsrf: rapportering'

Produktion:







Däremot kanske du inte vill hämta alla fält från ett visst dokument. I den här självstudien kommer du att lära dig hur du väljer specifika fält från ett dokument.



Alternativ för Elasticsearch Fields

Parametern fields tillåter oss att hämta specifika fält i en sökförfrågan. Dessutom kommer fältparametern att göra det möjligt för oss att hämta enstaka eller flera fält. Du kan också formatera datum och rumsliga datatyper med parametern fields.



Anta till exempel att vi vill hämta index, id, title, release_year, listade i, varaktighet och betygsfält från Netflix-index, kan vi köra en fråga enligt nedan:





curl -XGET 'http://localhost/netflix/_search' -H 'kbn-xsrf: rapportering' -H 'Content-Type: application/json' -d'
{
'query': {
'match': {
'_id': 'HXYz_IIBLbuC0z3qKeN2'
}
},
'fält': [
'index',
'id',
'titel',
'utgivningsår',
'listad i',
'varaktighet',
'betyg'
],
'_source': false

}'

I begäran ovan använder vi sök-API:et för att söka i dokumentet med angivet id i matchningsparametern.

Vi använder sedan parametern fields för att hämta de specifika fälten från måldokumentet.



Observera att Elasticsearch som standard inkluderar parametern _source, som består av alla dokumentfält. För att säkerställa att vi bara hämtar de angivna fälten stänger vi av parametern _source:

Förfrågan ovan bör returnera ett svar som visas:

{
'tog': 1,
'timed_out': false,
'_shards': {
'totalt': 1,
'lyckad': 1,
'hoppade över': 0,
'misslyckades': 0
},
'hits': {
'totalt': {
'värde': 1,
'relation': 'eq'
},
'max_score': 1,
'träffar': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'fält': {
'listad i': [
'Dokumentärer'
],
'duration': [
'90 min'
],
'utgivningsår': [
2020
],
'betyg': [
'PG-13'
],
'titel': [
'Dick Johnson är död'
]
}
}
]
}
}

Du kan också använda parametern _source för att definiera vilka fält som ska returneras från en sökfråga. Ett exempel visas nedan:

curl -XGET 'http://localhost:9200/netflix/_search' -H 'kbn-xsrf: rapportering' -H 'Content-Type: application/json' -d'
{
'_source': ['titel', 'release_year', 'betyg', 'duration'],
'query': {
'termin': {
'_id': {
'value': 'HXYz_IIBLbuC0z3qKeN2'
}
}
}

}'

I det här fallet anger vi fälten vi vill hämta som en array i källparametern. Förfrågan ovan bör returnera svaret som visas:

{
'tog': 0,
'timed_out': false,
'_shards': {
'totalt': 1,
'lyckad': 1,
'hoppade över': 0,
'misslyckades': 0
},
'hits': {
'totalt': {
'värde': 1,
'relation': 'eq'
},
'max_score': 1,
'träffar': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'_source': {
'duration': '90 min',
'release_year': 2020,
'rating': 'PG-13',
'title': 'Dick Johnson är död'
}
}
]
}

}

Slutsats

I den här artikeln lärde du dig hur du hämtar specifika fält från en sökbegäran med hjälp av parametrarna fields och _source.

För att lära dig mer om Elasticsearch och dess möjligheter, kolla in våra handledningar om ämnet. Du kommer garanterat att hitta något användbart.

Tack för att du läser & fånga dig i nästa!!