私はElasticSearchインデックスを持っています。オンラインストアのような製品が格納されています。今では私の店で製品のバリエーションを紹介したいと思いますが、すでにこのインデックスを使用しているツールがたくさんあるので、ネストされたデータ型や親子データ型を使用するようにインデックスを変更することはできません(これらのツールまた、)。余分なフィールドを追加することしかできませんでした。 - >インデックス時に論理グループにインデックスおよびグループバリアントを再構築できません。ElasticSearch:論理グループの最初の結果のみを返す
クエリ時にこのようなアイテムのグループを取得する最適な方法は何ですか? もう1つの問題:多くの商品が非バリアントなので、クエリの結果は、バリアント(グループ化)と非バリアントの別々のアイテムからミックスを返さなければなりません。それらは_scoreによってすべてソートされなければなりません。 可能なオプション:バリアントグループのすべてのアイテムを取得せず、各バリアントグループからの最良の結果のみを取得しても問題ありません。しかし、別の検索結果としてバリアントグループのアイテムを取得しないようにする必要があります。
多分私達は複数のクエリでそれを達成することができます - variant_idを超える最初のいくつかの集約と同様、後に別のクエリを
例すべての項目を取得する: 次の行のインデックスが作成されています
{"title": "Samsung TV xxx"}
{"title": "Philips TV yyy"}
{"title": "Nike shoe MyRun", "size": 40, "variant_group": 5}
{"title": "Nike shoe MyRun", "size": 42, "variant_group": 5}
{"title": "Adidas shoe YourRun", "size": 39, "variant_group": 10}
{"title": "Adidas shoe YourRun", "size": 40, "variant_group": 10}
{"title": "Adidas shoe YourRun", "size": 46, "variant_group": 10}
{"title": "Dictionary book"}
マイクエリ
{"title": "Samsung TV xxx"}
{"title": "Philips TV yyy"}
[
{"title": "Nike shoe MyRun", "size": 40, "variant_group": 5}
{"title": "Nike shoe MyRun", "size": 42, "variant_group": 5}
]
[
{"title": "Adidas shoe YourRun", "size": 39, "variant_group": 10}
{"title": "Adidas shoe YourRun", "size": 40, "variant_group": 10}
{"title": "Adidas shoe YourRun", "size": 46, "variant_group": 10}
{"title": "Dictionary book"}
]
{"title": "Dictionary book"}
OR(各バリアントグループからの最良の結果)これらのすべてのアイテムに一致するものは、 :
{"title": "Samsung TV xxx"}
{"title": "Philips TV yyy"}
{"title": "Nike shoe MyRun", "size": 40, "variant_group": 5}
{"title": "Adidas shoe YourRun", "size": 39, "variant_group": 10}
{"title": "Dictionary book"}
ありがとうございます!しかし、私はvariant_groupを持つ製品を手に入れます。 variant_groupを持たない他の製品とは何ですか? {"title": "Samsung TV xxx"} – vadimiron
ように編集されました( 'missing'パラメータ) – Pandawan