Einfacher, meine Frage mit einem Usecase zu illustrieren, also lassen Sie uns die example aus dem elasticsearch guide.Filterung/Sortierung auf Unterschiede zwischen zwei Werten, die in verschachtelten Arrays enthalten sind (nur mit Skriptfilter und Doc-Werten)
Dies listet ein Produkt auf. Jedes Produkt hat eine verschachtelte Array Händler enthält, die Produkt sagte verkaufen:
{
...
"product" : {
"properties" : {
"resellers" : {
"type" : "nested",
"properties" : {
"name" : { "type" : "text" },
"price" : { "type" : "double" }
}
}
}
}
}
Wie würde ich das folgende, wenn überhaupt möglich machen?
- Filtern Sie alle Produkte, bei denen storeA billiger ist als storeB. Z.B .:
product.resellers[name=storeA].price < product.resellers[name=storeB].price
- Bestellen Artikel von Differenz zwischen dem Preis von storeA und Speicher B
Dies muss wahrscheinlich ein Skript Filter und Ordnungsfilter jeweils, aber nicht sicher, wie ich über diese gehen würde. Darüber hinaus werden diese Arten von Abfragen häufig verwendet, so dass die Leistung wichtig ist. Daher muss ich wahrscheinlich bei DocValues bleiben, anstatt auf _source
zurückzugreifen. Ist das möglich? Ja
Op hier erhöhen. Ich stimme zu, dass dies funktionieren würde, aber nach der ursprünglichen Frage suche ich nach einer Lösung, die doc-Werte enthält, anstatt '_source' zu verwenden, da' _source' einen vollständigen Tabellen-Scan erfordert, der für meine Zwecke zu langsam wäre . Wenn das nicht möglich ist, würde ich einen gut erklärten Schnitt über das "Warum nicht" machen. Danke –
Du hast Recht, irgendwie habe ich vergessen zu sagen, warum es nicht möglich ist, dies mit Doc-Werten zu tun. – Val