W tym artykule omówiono, jak korzystać z Multi-Get API ElasticSearch do pobierania wielu dokumentów JSON na podstawie ich identyfikatorów. Ponadto ElasticSearch umożliwia użycie pojedynczego zapytania do pobierania dokumentów z indeksów za pomocą tylko identyfikatorów dokumentów.
Odkryjmy.
Składnia żądania
Poniżej znajduje się składnia interfejsu ElasticSearch Multi-Get API:
Get /_Mget
Pobierz // _ mget
Multi-Get API obsługuje wiele wskaźników, które pozwalają pobierać dokumenty, nawet jeśli nie są one w tym samym indeksie.
Żądanie obsługuje następujące parametry ścieżki:
- - Nazwa indeksu, z którego do pobrania dokumentów określonych przez ich identyfikatory.
Możesz także określić inne parametry zapytania, jak pokazano:
- Pierwszeństwo - Definiuje preferowany węzeł lub odłamek.
- Czas rzeczywisty - Jeśli jest ustawiony na true, operacja jest wykonywana w czasie rzeczywistym.
- Odświeżać - Zmusza operację do odświeżenia odłamków docelowych przed pobraniem określonych dokumentów.
- Rozgromienie - Wartość używana do prowadzenia operacji do określonego odłamka.
- Store_fields - Pobiera pola dokumentów przechowywane w indeksie, a nie dokument.
- _źródło - Wartość logiczna, która określa, czy żądanie powinno zwrócić pole _source, czy nie.
Zapytanie wymaga ciała, które obejmuje następujące wartości:
- Dokumenty - Określa dokumenty, które chcesz pobrać. Ponadto w tej sekcji obsługuje następujące atrybuty:
- _ID - Unikalny identyfikator dokumentu docelowego.
- _indeks - Indeks zawierający dokument docelowy.
- Rozgromienie - Klucz dla pierwotnego odłamka dokumentu.
- _źródło - Jeśli prawda, zawiera wszystkie pola źródłowe; W przeciwnym razie wyklucza to.
- _stored_fields - STODED_FIELDS, które chcesz dołączyć.
- IDS - Identyfikatory dokumentów, które chcesz pobrać.
Przykład 1: pobieraj wiele dokumentów z tego samego indeksu
Poniższy przykład pokazuje, jak używać Multi-Get API ElasticSearch do pobierania dokumentów z określonymi identyfikatorami z indeksu Netflix:
curl -xget "http: // localhost: 9200/netflix/_mget" -h "kbn -xsrf: raportowanie" -h "content -typ: application/json" -d '
„Dokumenty”: [
„_id”: „t3wnvombck2aezxpytlj”
,
„_id”: „W3wnvombck2aezxpytlj”
]
'
Podane żądanie powinno pobrać dokumenty z określonymi identyfikatorami z indeksu Netflix. Powstałe wyjście jest jak pokazano:
„Dokumenty”: [
„_Index”: „Netflix”,
„_id”: „t3wnvombck2aezxpytlj”,
"_wersja 1,
„_seq_no”: 0,
„_primary_term”: 1,
„Znaleziono”: prawda,
"_źródło":
„Czas trwania”: „90 min”,
„Listed_in”: „Dokumenty”,
„Kraj”: „Stany Zjednoczone”,
„DATE_ADDED”: „25 września 2021”,
„show_id”: „s1”,
„Dyrektor”: „Kirsten Johnson”,
„Release_year”: 2020,
„Ocena”: „PG-13”,
„Opis”: „Gdy jej ojciec zbliża się do końca swojego życia, filmowiec Kirsten Johnson organizuje swoją śmierć w pomysłowy i komiczny sposób, aby pomóc im oboje stawić czoła nieuniknionym.",
„Typ”: „film”,
„Tytuł”: „Dick Johnson jest martwy”
,
„_Index”: „Netflix”,
„_id”: „W3wnvombck2aezxpytlj”,
"_wersja 1,
„_seq_no”: 12,
„_primary_term”: 1,
„Znaleziono”: prawda,
"_źródło":
„Kraj”: „Niemcy, Republika Czeska”,
„show_id”: „s13”,
„Dyrektor”: „Christian Schwochow”,
„Release_year”: 2021,
„Ocena”: „TV-MA”,
„Opis”: „Po zamordowaniu większości jej rodziny w bombardowaniu terrorystycznym młoda kobieta jest nieświadomie zwabiona do dołączenia do grupy, która ich zabiła.",
„Typ”: „film”,
„Tytuł”: „Je Suis Karl”,
„Czas trwania”: „127 min”,
„Listed_in”: „Dramaty, filmy międzynarodowe”,
„Obsada”: „Luna Wedler, Jannis Niewöhner, Milan Peschel, Edin Hasanović, Anna Fialová, Marlon Boess, Victor Boccard, Fleur Geffrier, Aziz Dyab, Mélanie Fouché, Elizaveta Maximová”,
„DATE_ADDED”: „23 września 2021”
]
Możemy również uprościć żądanie, umieszczając identyfikatory dokumentów w prostej tablicy, jak pokazano następująco:
curl -xget "http: // localhost: 9200/netflix/_mget" -h "kbn -xsrf: raportowanie" -h "content -typ: application/json" -d '
„IDS”: [„t3wnvombck2aezxpytlj”, „W3wnvombck2aezxppytlj”]
'
Poprzednie żądanie powinno wykonać podobną akcję.
Przykład 2: Pobierz dokumenty z wielu wskazówek
W poniższym przykładzie żądanie pobiera wiele dokumentów z różnych wskaźników, jak pokazano:
curl -xget "http: // localhost: 9200/_mget" -h "kbn -xsrf: raportowanie" -h "content -type: application/json" -d '
„Dokumenty”: [
„_Index”: „Netflix”,
„_id”: „t3wnvombck2aezxpytlj”
,
„_Index”: „Disney”,
„_ID”: „8J4WWOMB1YF5VQFAKCE4”
]
'
Powstałe wyjście jest jak pokazano:
Przykład 3: Wyklucz określone pola
Możemy wykluczyć określone pola z danego żądania za pomocą parametrów źródła_include i źródła_exclude.
Przykładem jest jak pokazano:
curl -xget "http: // localhost: 9200/_mget" -h "kbn -xsrf: raportowanie" -h "content -type: application/json" -d '
„Dokumenty”: [
„_Index”: „Netflix”,
„_id”: „t3wnvombck2aezxpytlj”,
„_Source”: False
,
„_Index”: „Netflix”,
„_id”: „t3wnvombck2aezxpytlj”,
"_źródło":
„INCELLACJA”: [„Listed_in”, „Release_year”, „Tytuł”],
„wyklucz”: [„Opis”, „typ”, „date_added”]
]
'
Dane żądanie używa źródła i wyklucz, aby określić, które pola chcesz odzyskać w danym dokumencie.
Powstałe wyjście jest jak pokazano:
Wniosek
W tym poście omówiliśmy podstawy pracy z ElasticSearch Multi-Get API, który pozwala pobierać wiele dokumentów z różnych źródeł na podstawie ich identyfikatorów. Zapraszam do zbadania innych dokumentów, aby uzyskać więcej informacji.
Szczęśliwe kodowanie!