Elasticsearch では、あるタイプのベクトルという用語が別のタイプのベクトルに影響を与えるのを避けるために、各タイプを個別のインデックスに含める必要があります。
デフォルトでは、Elasticsearch は新しいインデックスごとに 5 つのプライマリ シャードを割り当てます (各シャードは Lucene インスタンスです)。小さい型の場合は、1 つのプライマリ シャードだけでインデックスを作成できます。
curl -XPUT 'http://127.0.0.1:9200/user/?pretty=1' -d '
{
"settings" : {
"number_of_shards" : 1
}
}
'
アップデート
パフォーマンスに関するご質問について。関連するすべてのシャードで並行して検索が行われるため、パフォーマンスは実際には、使用しているハードウェアの量とシャードの大きさ (そしてもちろん、クエリの複雑さ) によって異なります。
ユースケースとデータをテストせずに、複数のインデックスがパフォーマンスに与える影響を正確に見積もることは困難です。とはいえ、ES は分散検索用に構築されており、このシナリオでは非常にうまく機能します。
更新 2
同じインデックス内の異なるタイプのフィールドname
には、そのフィールド内のすべてのタイプの用語が含まれるため、用語の頻度が低下します。
name
ただし、たとえば、 and のフィールドを使用する代わりに、 user
andproduct
を使用するuser_name
など、さまざまなタイプで異なるフィールド名を使用することもできますproduct_name
。頻度という用語は、そのタイプのそのフィールドだけに関連します。ドキュメントの頻度は明らかにすべてのドキュメントを考慮に入れますが、それがグローバルな影響であることを考えると、違いはありません。