当前位置: 首页 > 知识库问答 >
问题:

在Elasticsearch中搜索结果的顺序每次都不同

慕光赫
2023-03-14

查询:{“explain”:true,“size”:500,“Query”:{“query_string”:{“query_string”:{“query_string”:“((names.name:(BANK AMERICA\\)”)^50或(names.name:(BANK AMERICA\))^30或(name_pair:\“BANK AMERICA\\\)^30或(name_name:(BANK AMERICA\\\)^30或(normal_name:(BANK AMERICA)^40或(normal_name:(BANK)^6或(address.streetnumber:\”\“和address.streetname:\”\“)^15或(电话.电话:\”\“)^50或(mailaddresses.postbox:\”\“)^6)”}},“排序”:[{“_score”:{“order”:“desc”}},{“statusindicator”:{“order”:“asc”}}],“aggs”:{“name”:{“filter”:{“term”:{“name”:“atls”}}}}

当运行上面的命令时,结果是:

“hits”:{“total”:106421,“max_score”:null,“hits”:[{“_shard”:0,“_node”:“1”,“_index”:“allocation_e1”,“_type”:“my_type”,“_id”:“217600050_826_e1”,“_score”:2.9569159,“_routing”:“e1”,“_source”:{“sample_number”:217600050,“countrycode”:101,“state”:“e1”,“name”:“bank of AMERICA PLC

再次破坏同一查询时,结果是:

查询:{“explain”:true,“size”:500,“Query”:{“query_string”:{“query_string”:{“query_string”:“((names.name:(BANK AMERICA\\)”)^50或(names.name:(BANK AMERICA\))^30或(name_pair:\“BANK AMERICA\\\)^30或(name_name:(BANK AMERICA\\\)^30或(normal_name:(BANK AMERICA)^40或(normal_name:(BANK)^6或(address.streetnumber:\”\“和address.streetname:\”\“)^15或(电话.电话:\”\“)^50或(mailaddresses.postbox:\”\“)^6)”}},“排序”:[{“_score”:{“order”:“desc”}},{“statusindicator”:{“order”:“asc”}}],“aggs”:{“name”:{“filter”:{“term”:{“name”:“atls”}}}}

“hits”:{“total”:106421,“max_score”:null,“hits”:[{“_shard”:0,“_node”:“1”,“_index”:“allocation_e1”,“_type”:“my_type”,“_id”:“239958846_826_e1”,“_score”:2.9571724,“_routing”:“e1”,“countrycode”:101,“state”:“e1”,“name”:“bank of AMERICA PLC”,

运行同一查询时,文档顺序不同,为什么运行同一查询时文档顺序会发生变化?

请提前帮忙谢谢

共有1个答案

殷建弼
2023-03-14

根据UID按降序运行查询,您将得到相同的结果。

比较下面的例子。

未排序:

 类似资料:
  • 问题内容: 这与多级排序无关。 我需要首先根据距离选择结果,将结果限制为50,然后再按价格将这50结果排序。 本质上,第二种排序放弃了内部排序的顺序-但是内部排序用于磨练前50个结果。 对于此类问题,我看到的其他答案是第二级排序,这不是我想要的。 顺便说一句:我看过聚合-前N个结果,但不确定是否可以对聚合结果排序应用排序。也看过了,但我不知道将“分类”放在哪里 问题答案: 热门匹配汇总可让您根据主

  • 如何在按分页顺序聚合术语字段后获取记录。到目前为止,我有这个: 我对此进行了研究,有人说,通过使用复合聚合或分区,这是可能的。但我不知道我如何才能真正做到这一点。 我也查看了bucket\u sort,但我似乎无法使其发挥作用: 我对这件事很在行。请帮帮我。谢谢

  • 问题内容: 首先创建一些示例数据(e1,e2,e3是类型,而test是索引名称): 现在我的问题是:我怎样才能仅获得这两个数据?删除结果中具有相同ID的重复数据。 问题答案: 首先,您将需要搜索多个索引。 然后,在结果上删除重复的ID。

  • 问题内容: 我想使用Tire gem作为ElasticSearch的客户端来索引pdf附件。在我的映射中,我从_source中排除了附件字段,因此附件不存储在索引中, 也不在搜索结果中返回 : 运行以下curl命令时,仍然可以看到搜索结果中包含的附件​​内容: 我已经在这个线程中发布了我的问题: 但是我刚刚注意到,不仅附件包含在搜索结果中,而且所有其他字段(包括未映射的字段)也都包含在内,如下所示

  • "在Elasticsearch中设计索引以便" 我们如何使Elasticsearch返回相同的结果,无论搜索是否使用"and"作为查询字符串或&" 例如,有一个查询来查找包含“和/”的所有电影标题 先生。 所以在这种情况下,搜索是否用“和”或“ 从我的Kibana开发工具中转储 放置测试索引{“设置”:{“副本的数量”:0,“碎片的数量”:1},“映射”:{“文档”:{“属性”:{“电影名称”:{

  • 问题内容: 我正在编写一个PHP脚本(它也使用linux bash命令),将通过执行以下操作在测试用例中运行: 我正在使用PostgreSQL数据库(8.4.2)… 1.)创建一个数据库2.)修改数据库3.)存储数据库的数据库转储(pg_dump) 4.)通过执行步骤1.)和2.),进行回归测试,然后进行另一个数据库转储,并将其(diff)与步骤3.)中的原始数据库转储进行比较。 但是,我发现pg