製品プロパティの大規模なセットを持つ ElasticSearch インデックスがあります。それらはすべてそのように見えます:
{'_id':1,'type':'manufacturer','name':'Toyota'},
{'_id':2,'type':'color','name':'Green'},
{'_id':3,'type':'category','name':'SUV Cars'},
{'_id':4,'type':'material','name':'Leather'},
{'_id':5,'type':'manufacturer','name':'BMW'},
{'_id':6,'type':'color','name':'Red'},
{'_id':7,'type':'category','name':'Cabrios'},
{'_id':8,'type':'material','name':'Steel'},
{'_id':9,'type':'category','name':'Cabrios Hardtop'},
{'_id':10,'type':'category','name':'Cabrios Softtop'},
... and 1 Mio. more ...
既存の製品プロパティには、カテゴリ、メーカー、色、および材料の 4 つの異なるタイプがあります。
質問: クエリを 1 つだけ使用して(これはパフォーマンス要件が決まっています)、各タイプに最適な結果を得るにはどうすればよいですか?
したがって、「Green Toyota Cabrios」などの全文検索クエリを要求すると、次の結果が得られるはずです。
{'_id':2,'type':'color','name':'Green'},
{'_id':1,'type':'manufacturer','name':'Toyota'},
{'_id':7,'type':'category','name':'Cabrios'},
{one matching result of the 'material'-type if found by the query}
これは完璧な結果セットであり、常に最大 4 つの結果 (「タイプ」ごとに 1 つの結果)です。利用可能な特定のタイプに一致する結果がない場合は、3 つの結果アイテムのみが返されます。
Elasticsearch でそれがどのように可能になるのでしょうか? アイデアをありがとう!