Mam dwa odwzorowania w moim indeksie. Jeden z nich przechowuje pewną kwotę w różnych walutach, a inne przechowuje bieżący współczynnik konwersji. Zapisy w każdy wyglądać następująco:Przekazywanie wartości dynamicznej do kwerendy skryptu w wyszukiwaniu elastycznym
http://localhost:9200/transactions/amount
[{
_index: "transactions",
_type: "amount",
_id: "AVA3fjawwMA2f8TzMTbM",
_score: 1,
_source: {
balance: 1000,
currency:"usd"
}
},
{
_index: "transactions",
_type: "amount",
_id: "AVA3flUWwMA2f8TzMTbN",
_score: 1,
_source: {
balance: 2000,
currency:"inr"
}
}]
i
http://localhost:9200/transactions/conversions
{
_index: "transactions",
_type: "conversions",
_id: "rates",
_score: 1,
_source: {
"usd": 1,
"inr":62.6
}
}
Chcę kwerendy danych z amount
i zastosować aktualne przeliczniki z conversions
w jednym zapytaniu i uzyskać wynik .
Próbowałem za pomocą skryptów zapytanie i był w stanie konwertować dane w oparciu o przekazane params jak:
GET _search
{
"query": {
"match_all": {}
},
"script_fields" : {
"test1" : {
"script" : "_source.balance * factor",
"params" : {
"factor" : 63.2
}
}
}
}
Jednak w moim przypadku minęło params mają być pobrane od wyniku innego zapytania.
Chcę wizualizować moje dane w Kibanie we wspólnej walucie. Kibana obsługuje zapytania skryptowe. Zgodnie z moją wiedzą wszystkie wizualizacje w Kibana mogą odpowiadać pojedynczemu elastycznemu zapytaniu, więc nie mam opcji do wykonywania wielu zapytań.
Próbowałem również zbadać możliwość użycia https://www.elastic.co/blog/terms-filter-lookup i dodanie niektórych dynamicznych pól do każdego dokumentu w zestawie wyników. Jednak nie sądzę, że filtr term pozwala na to.