我有8个以上的索引,它们共享一些公共字段,并且具有自己的特定于索引的字段。当我使用simple_query_string在所有索引中搜索这些公共字段时,我发现排名非常糟糕,并且排名前几的结果始终来自特定索引。
有人告诉我这是因为tf / idf是针对每个单独的索引计算的,然后确定索引之间的排名,这会使idf较低的索引显示较高。
看文档,https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-search-type.html#dfs-query-then-fetch 1计算交叉分片idf并将其用于排名。我认为这也意味着它也可以跨索引计算idf。那个文档说虽然不将其用于生产。
我有一个选择就是将所有内容都放在一个索引中,将不适用的字段留空。这样,我可以只搜索单个索引。
另一个选择是使用dfs_query_then_fetch。
推荐哪个?在生产中使用dfs_query_then_fetch是否存在真正的问题?