1

製品プロパティの大規模なセットを持つ 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 でそれがどのように可能になるのでしょうか? アイデアをありがとう!

4

1 に答える 1

0

私はあなたのユースケースを明確に理解していません。実際に何をインデックスしていますか?車のインデックスを作成する場合は、次のようにインデックスを作成する必要があります。

{
  "color": "Green",
  "manufacturer": "Toyota",
  "category": "Cabrios"
}

つまり、あなたが尋ねる質問から:

おそらく、フィールドを not_indexed として定義できます。そうすれば、フィールド「name」で「Green Toyota Cabrios」を検索しても、「Cabrios Hardtop」は表示されません。

私が本当に答えたかどうかはわかりませんが、あなたのユースケースはわかりません...

于 2013-01-25T15:59:36.477 に答える