Elasticsearch Selecteer specifieke velden

Elasticsearch Selecteer Specifieke Velden



Elasticsearch retourneert standaard alle velden in een document bij het uitvoeren van een zoekopdracht. Dit wordt gedefinieerd door de parameter _source, die alle gegevens bevat die tijdens het indexeren in het record zijn opgeslagen.

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

Uitgang:







Het kan echter zijn dat u niet alle velden uit een bepaald document wilt ophalen. In deze zelfstudie leert u hoe u specifieke velden uit een document selecteert.



Optie Elasticsearch-velden

Met de parameter velden kunnen we specifieke velden in een zoekopdracht ophalen. Bovendien stelt de veldparameter ons in staat om enkele of meerdere velden op te halen. U kunt ook datums en typen ruimtelijke gegevens opmaken met behulp van de parameter velden.



Stel dat we bijvoorbeeld de velden index, id, title, release_year, vermeld in, duration en rating willen ophalen uit de Netflix-index, dan kunnen we een query uitvoeren zoals hieronder wordt weergegeven:





curl -XGET 'http://localhost/netflix/_search' -H 'kbn-xsrf: rapportage' -H 'Content-Type: application/json' -d'
{
'vraag': {
'wedstrijd': {
'_id': 'HXYz_IIBLbuC0z3qKeN2'
}
},
'velden': [
'inhoudsopgave',
'ID kaart',
'titel',
'jaar van uitgave',
'opgenomen in',
'looptijd',
'beoordeling'
],
'_source': false

}'

In het bovenstaande verzoek gebruiken we de zoek-API om het document te doorzoeken met de opgegeven id in de matchparameter.

Vervolgens gebruiken we de parameter velden om de specifieke velden uit het doeldocument op te halen.



Houd er rekening mee dat Elasticsearch standaard de parameter _source bevat, bestaande uit alle documentvelden. Om ervoor te zorgen dat we alleen de opgegeven velden ophalen, schakelen we de parameter _source uit:

Het bovenstaande verzoek zou een antwoord moeten retourneren zoals weergegeven:

{
'nam': 1,
'timed_out': false,
'_scherven': {
'totaal': 1,
'geslaagd': 1,
'overgeslagen': 0,
'mislukt': 0
},
'treffers': {
'totaal': {
'waarde': 1,
'relatie': 'eq'
},
'max_score': 1,
'treffers': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'velden': {
'opgenomen in': [
'Documentaires'
],
'looptijd': [
'90 minuten'
],
'jaar van uitgave': [
2020
],
'beoordeling': [
'PG-13'
],
'titel': [
'Dick Johnson is dood'
]
}
}
]
}
}

U kunt ook de parameter _source gebruiken om te definiëren welke velden moeten worden geretourneerd uit een zoekopdracht. Een voorbeeld is hieronder weergegeven:

curl -XGET 'http://localhost:9200/netflix/_search' -H 'kbn-xsrf: rapportage' -H 'Inhoudstype: applicatie/json' -d'
{
'_source': ['title', 'release_year', 'rating', 'duration'],
'vraag': {
'termijn': {
'_ID kaart': {
'waarde': 'HXYz_IIBLbuC0z3qKeN2'
}
}
}

}'

In dit geval specificeren we de velden die we willen ophalen als een array in de bronparameter. Het bovenstaande verzoek zou het antwoord moeten retourneren zoals weergegeven:

{
'nam': 0,
'timed_out': false,
'_scherven': {
'totaal': 1,
'geslaagd': 1,
'overgeslagen': 0,
'mislukt': 0
},
'treffers': {
'totaal': {
'waarde': 1,
'relatie': 'eq'
},
'max_score': 1,
'treffers': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'_bron': {
'duur': '90 min',
'release_jaar': 2020,
'beoordeling': 'PG-13',
'titel': 'Dick Johnson is dood'
}
}
]
}

}

Conclusie

In dit artikel hebt u geleerd hoe u specifieke velden uit een zoekopdracht kunt ophalen met behulp van de velden en _source-parameters.

Bekijk onze tutorials over dit onderwerp voor meer informatie over Elasticsearch en de mogelijkheden ervan. Je vindt gegarandeerd iets nuttigs.

Bedankt voor het lezen & Vang je in de volgende !!