【问题标题】:Search results order varies each time in Elasticsearch在 Elasticsearch 中,搜索结果的顺序每次都不同
【发布时间】:2017-03-06 08:30:39
【问题描述】:

我们有 20 万条记录。第一次运行大小为 500 的搜索查询时,我在 doc-1、doc-2、doc-3 中得到结果。但是,当我第二次运行相同的搜索查询时,我将顺序更改为 doc-2、doc-1 等……为什么每次运行相同的查询时搜索结果顺序都会有所不同?

查询:{"explain":true,"size":500,"query":{"query_string":{"query":" ( (NAME:\"BANK AMERICA\")^50 OR (Names.姓名:(BANK AMERICA))^30 OR (NAME_PAIR:\"BANK AMERICA\")^30 OR (NORMAL_NAME:(BANK AMERICA) AND CITY:\"\") ^40 OR (NORMAL_NAME:(BANK AMERICA))^ 30 OR (Styles.value:\"BS\")^5 OR (NORMAL_NAME:\"BANK AMERICA\")^5 OR (address.streetName:\"\" AND CITY:\"\")^30 OR (邮编:\"\")^6 OR (address.streetName:\"\")^6 OR (address.streetNumber:\"\" AND address.streetName:\"\")^15 OR (telephones.telephone: \"\")^50 OR (mailAddresses.postbox:\"\")^6 ) "}},"sort":[{"_score":{"order":"desc"}},{"statusIndicator" :{"order":"asc"}}],"aggs":{"NAME":{"filter":{"term":{"NAME":"ATLS"}}}}}

运行上面的结果是:

“命中”:{ “总计”:106421, “最大分数”:空, “命中”:[ { “_shard”:0, “_node”:“1”, "_index": "allocation_e1", "_type": "my_type", "_id": "217600050_826_E1", “_score”:2.9569159, "_routing": "E1", “_资源”: { “样品编号”:217600050, “国家代码”:101, “状态”:“E1”, "名称": "美国银行",

当再次破坏相同的查询时,结果是:

查询:{"explain":true,"size":500,"query":{"query_string":{"query":" ( (NAME:\"BANK AMERICA\")^50 OR (Names.姓名:(BANK AMERICA))^30 OR (NAME_PAIR:\"BANK AMERICA\")^30 OR (NORMAL_NAME:(BANK AMERICA) AND CITY:\"\") ^40 OR (NORMAL_NAME:(BANK AMERICA))^ 30 OR (Styles.value:\"BS\")^5 OR (NORMAL_NAME:\"BANK AMERICA\")^5 OR (address.streetName:\"\" AND CITY:\"\")^30 OR (邮编:\"\")^6 OR (address.streetName:\"\")^6 OR (address.streetNumber:\"\" AND address.streetName:\"\")^15 OR (telephones.telephone: \"\")^50 OR (mailAddresses.postbox:\"\")^6 ) "}},"sort":[{"_score":{"order":"desc"}},{"statusIndicator" :{"order":"asc"}}],"aggs":{"NAME":{"filter":{"term":{"NAME":"ATLS"}}}}}

点击“:{ “总计”:106421, “最大分数”:空, “命中”:[ { “_shard”:0, “_node”:“1”, "_index": "allocation_e1", "_type": "my_type", "_id": "239958846_826_E1", “_score”:2.9571724, "_routing": "E1", “_资源”: { “sample_number”:239958846, “国家代码”:101, “状态”:“E1”, "名称": "美国银行",

当运行相同的查询时,文档顺序会有所不同,为什么运行相同的查询时文档顺序会发生变化?

请提前帮助解决这个问题

【问题讨论】:

  • 您应该将查询和相应的响应示例添加到您的帖子中,以便 SO 用户可以帮助您。
  • 还有几个问题:#1 你有没有得到相同的结果集?数据会变吗?数据是否可能在搜索之间重新索引?此外,您有什么方法可以将命中 Solr 的实际查询字符串推送到日志中?代码看起来有很多东西在运行中被替换,所以当查询被执行时,看看那些实际的东西是什么会很好。 (这有意义吗?还是我错过了什么?)
  • 每次我们为同一个查询获得不同的结果集。如果我多次运行相同的查询,只有 2 条记录在第一个和第二个之间交换。搜索之间不会发生重新索引。您知道我们使用的是弹性搜索而不是 solr。虽然这是一个常见问题,但我们也希望 solr 提供帮助......

标签: search elasticsearch solr


【解决方案1】:

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

比较以下示例。

未分类:

升序排列:

【讨论】:

  • Solr 将score desc 作为默认排序参数。
  • 嗨@ericLavault,您是说我的论点是错误的,还是应该针对同一查询以相同的顺序返回文档?
  • 嗨,我认为“Solr 不保证以任何特定顺序返回结果”的说法是错误的,如果有,Solr 根据指定的排序参数返回结果,如果有则返回score desc没有设置,所以总是有一个排序顺序。此外,如果 OP 真的运行 same 搜索查询,排序参数,无论是否指定,最终都应该是相同的。
  • @ericLavault,感谢您指出 - 刚刚找到它:cwiki.apache.org/confluence/display/solr/… 再次感谢。 user3351014,您能否分享两个产生不同结果的示例查询以及结果,以便我们弄清楚发生了什么?
  • @ericLavault @Lefty G Balogh 编辑了我的帖子并添加了查询和回复
猜你喜欢
  • 2021-03-08
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 2015-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多