【问题标题】:Elasticsearch how to query on ID field higher than xElasticsearch如何查询高于x的ID字段
【发布时间】:2016-10-19 12:14:50
【问题描述】:

我正在尝试通过多次查询来将分页应用于结果以超过 Elasticsearch 的 10k 障碍。由于 Elasticsearch 的结果在多个查询中可能不同,我想使用生成的 ID 来获取下一个结果。

例如,我运行一个返回 1000 个结果的查询。然后我想获取第 1000 个结果的 ID 值,并执行如下查询: match : ID {{1000thID}}

这样我想得到 1001 到 2000 的结果。从 2001 年到 3000 年,以此类推。

我目前使用 Elasticsearch DSL for python 来查询域名,例如:

search.query('match', domainname=domainname)

如何重建此代码以符合上述要求。 ('匹配',_ID > ID_Variable)

【问题讨论】:

    标签: python elasticsearch range elasticsearch-dsl elasticsearch-py


    【解决方案1】:

    实现您想要的最佳方式是使用 scroll/can API。但是,如果您仍然想继续那样做,您可以这样做:

    last_id = ...
    search.filter('range', id={'gt': last_id + 1, 'lt': last_id + 1000})
    

    【讨论】:

    • 该死,忘了说生成的 ID 是字母数字的,例如:“AVfcOQSECcVao75vrqGf”,因此我猜上面的解决方案行不通!
    • 还有一个非常重要的 ;-) 如果你真的想要,你仍然可以使用自己的 id。
    • 我在哪里配置它自动增量、Logstash 或 Elasticsearch?以及如何配置它的任何来源?我看过你自己的身份证,但我能找到的都是手动添加的。
    • 是的,您需要在索引文档时明确提供自己的自定义 ID。 ES 不会为你做的。
    猜你喜欢
    • 2022-01-19
    • 2015-07-24
    • 2016-08-18
    • 2022-12-04
    • 1970-01-01
    • 2017-04-12
    • 2021-11-15
    • 2019-03-06
    • 2012-07-11
    相关资源
    最近更新 更多