【问题标题】:How to use Python Elasticsearch mget() API如何使用 Python Elasticsearch mget() API
【发布时间】:2016-05-28 06:03:30
【问题描述】:

我想使用 elasticsearch python 的 _mget API 获取具有多个 id 的文档。

我在 Elasticsearch 对象上使用 es.mget() 方法。但是,我不知道该提供什么作为 body 参数的参数。它应该是逗号分隔的 id 列表还是提到 _id 的文档列表。

我已经尝试了两种方法,但我一直收到异常:

elasticsearch.exceptions.RequestError

【问题讨论】:

    标签: python elasticsearch


    【解决方案1】:

    mget() 在您通过文档 ID 检索多个文档时使用。 你应该通过body = {'ids': [doc_id1, doc_id2]} 描述ES Multi GET API

     es_client.mget(index = 'bank',
                    doc_type = 'account',
                    body = {'ids': ['100', '101']})
    

    【讨论】:

    • 是否可以将索引作为值*?我不知道 id 在哪个索引中,因为我使用的是 index-dateamp
    • @ScipioAfricanus 不,你不能。你必须知道id所属的具体索引。如果您搜索多个索引,我建议使用搜索 API。它具有多索引功能。 elastic.co/guide/en/elasticsearch/reference/current/…
    • 搜索效率不如mget,不是吗?我确切地知道我所追求的身份。感谢您的建议。
    • @ScipioAfricanus 是的,通过 doc_id 检索是最快的方法。虽然搜索 API 支持按 _id 字段搜索(如 POST /idx-*/_search { "query": { "bool": { "should": [ { "term": { "_id": "id1" } }, { "term": { "_id": "i2" } } ] } } }),但它会扫描索引的所有分片,因此速度较慢。我认为discuss.elastic.co 比我的回答更适合向您提问。
    猜你喜欢
    • 2016-01-18
    • 2016-08-25
    • 2018-05-08
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    • 2014-07-04
    • 2017-11-21
    相关资源
    最近更新 更多