Używam elastyczną bibliotekę Go olivere do uruchomienia elastyczne zapytań - https://godoc.org/github.com/olivere/elastic#NestedQueryElasticsearch Go zagnieżdżone zapytania
Dane Próbuję kwerendy na wygląda następująco:
"_source": {
"field1": "randVal1",
"field2": "randVal2",
"nestedfield": {
"ind1": "val1"
}
}
próbuję uruchomić kwerendę na nestedfield
pomocą wywołania NestedQuery
z biblioteki Elastic Go tak:
aquery := elastic.NewTermQuery("ind1", "val1")
query := elastic.NestedQuery("nestedfield", aquery)
Ale pojawia się błąd informujący:
zbyt wiele argumentów konwersji na NestedQuery
Próbuję pobrać wszystkie dokumenty gdzie ind1
z nestedfield
jest val1
. Byłbym wdzięczny za pomoc w skonstruowaniu tego zapytania.
EDIT:
Zmieniłem go NewNestedQuery i teraz nie daje tego błędu. Nie zwraca jednak żadnych wyników, mimo że dokument ten istnieje w indeksie i mogę wysyłać zapytania do pól niezagnieżdżonych.
Próbowałem to:
aquery := elastic.NewTermQuery("ind1", "val1")
query := elastic.NewNestedQuery("nestedfield", aquery)
I tak:
query := elastic.NewNestedQuery("nestedfield", elastic.NewMatchQuery("nestedfield.ind1", "val1"))
Ale oboje daje 0 wyników. Masz pojęcie, co robię źle?
EDIT # 2
Odwzorowanie jest:
"field1": { "type": "string" },
"field2": { "type": "string" },
"nestedfield": {
"type": "nested"
}
Co ostatecznie pracował było to:
query := elastic.NewMatchQuery("nestedfield.ind1", "val1")
udało mi się dodać dodatkowe pola do 'nestedfield' i nie zapytania takie jak:
query := elastic.NewBoolQuery().Filter(elastic.NewMatchQuery("nestedfield.ind1", "val1"), elastic.NewMatchQuery("nestedfield.ind2", "val2"))
Udostępnij swoje mapowanie.Podejrzewam, że "nestedfield" w rzeczywistości nie jest zagnieżdżonym dokumentem. – Peter
Poprawiłem odpowiedź poniżej, ale powinieneś spróbować podać więcej szczegółów pełnego kodu używanego do wyszukiwania. –
Wspólne mapowanie i co ostatecznie działało – covfefe