Elasticsearch Wybierz określone pola

Elasticsearch Wybierz Okreslone Pola



Elasticsearch domyślnie zwróci wszystkie pola w dokumencie po wykonaniu zapytania wyszukiwania. Jest to zdefiniowane przez parametr _source, który zawiera wszystkie dane przechowywane w rekordzie podczas indeksowania.

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

Wyjście:







Możesz jednak nie chcieć pobierać wszystkich pól z danego dokumentu. W tym samouczku dowiesz się, jak wybrać określone pola z dokumentu.



Opcja pól Elasticsearch

Parametr fields pozwala nam pobrać określone pola w żądaniu wyszukiwania. Dodatkowo parametr field umożliwi nam pobranie jednego lub wielu pól. Za pomocą parametru fields można również formatować daty i typy danych przestrzennych.



Załóżmy na przykład, że chcemy pobrać indeks, identyfikator, tytuł, rok wydania, wymienione w, czas trwania i pola oceny z indeksu Netflix, możemy uruchomić zapytanie, jak pokazano poniżej:





curl -XGET 'http://localhost/netflix/_search' -H 'kbn-xsrf: raportowanie' -H 'Typ treści: aplikacja/json' -d'
{
'zapytanie': {
'mecz': {
'_id': 'HXYz_IIBLbuC0z3qKeN2'
}
},
'pola': [
'indeks',
'ID',
'tytuł',
'rok wydania',
'wymienione_w',
'Trwanie',
'ocena'
],
„_źródło”: fałsz

}'

W powyższym żądaniu używamy interfejsu API wyszukiwania do wyszukiwania dokumentu o określonym identyfikatorze w parametrze match.

Następnie używamy parametru fields, aby pobrać określone pola z dokumentu docelowego.



Zauważ, że Elasticsearch domyślnie zawiera parametr _source, składający się ze wszystkich pól dokumentu. Aby upewnić się, że pobieramy tylko określone pola, wyłączamy parametr _source:

Powyższe żądanie powinno zwrócić odpowiedź, jak pokazano:

{
„wziął”: 1,
'timed_out': fałsz,
'_odłamki': {
„ogółem”: 1,
„udany”: 1,
'pominięty': 0,
'nie powiodło się': 0
},
'trafienia': {
'całkowity': {
„wartość”: 1,
'relacja': 'równ.'
},
'max_score': 1,
'trafienia': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'pola': {
'listed_in': [
'Filmy dokumentalne'
],
'Trwanie': [
'90 minut'
],
'rok wydania': [
2020
],
'ocena': [
„PG-13”
],
'tytuł': [
„Dick Johnson nie żyje”
]
}
}
]
}
}

Możesz również użyć parametru _source, aby określić, które pola mają zostać zwrócone z zapytania wyszukiwania. Przykład jest pokazany poniżej:

curl -XGET 'http://localhost:9200/netflix/_search' -H 'kbn-xsrf: raportowanie' -H 'Typ treści: aplikacja/json' -d'
{
'_source': ['tytuł', 'rok_wydania', 'ocena', 'czas trwania'],
'zapytanie': {
'termin': {
'_ID': {
'wartość': 'HXYz_IIBLbuC0z3qKeN2'
}
}
}

}'

W tym przypadku określamy pola, które chcemy pobrać jako tablicę w parametrze źródłowym. Powyższe żądanie powinno zwrócić odpowiedź, jak pokazano:

{
'wziął': 0,
'timed_out': fałsz,
'_odłamki': {
„ogółem”: 1,
„udany”: 1,
'pominięty': 0,
'nie powiodło się': 0
},
'trafienia': {
'całkowity': {
„wartość”: 1,
'relacja': 'równ.'
},
'max_score': 1,
'trafienia': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'_źródło': {
'czas trwania': '90 min',
'rok_wydania': 2020,
'ocena': 'PG-13',
'tytuł': 'Dick Johnson nie żyje'
}
}
]
}

}

Wniosek

W tym artykule dowiedziałeś się, jak pobrać określone pola z żądania wyszukiwania za pomocą pól i parametrów _source.

Aby dowiedzieć się więcej o Elasticsearch i jego możliwościach, zapoznaj się z naszymi samouczkami na ten temat. Na pewno znajdziesz coś przydatnego.

Dzięki za przeczytanie i do zobaczenia w następnym!!