python - 使用elasticserch dsl更新elasticsearch数据

标签 python elasticsearch elasticsearch-dsl

如何使用elasticsearch-dsl软件包更新 elasticsearch 数据?那可能吗 ?
我找到了elasticsearch update api,但似乎有点困难。我要找的是

searchObj = Search(using=logserver, index=INDEX)
searchObj=searchObj.query("term",attribute=value).update(attribute=new_value)
response = searchObj.execute()

最佳答案

如果我没记错的话,elasticsearch_dsl没有更新/批量更新的选项。
因此,您可以根据需要使用elasticsearch-py pckage。
示例

from elasticsearch import Elasticsearch

INDEX = 'myindex'
LOG_HOST = 'myhost:myport'
logserver = Elasticsearch(LOG_HOST)

script = "ctx._source.attribute = new_value"

update_body = {

    "query": {
        "bool": {
            "filter": {
                "term": {"attribute": "value"}
            }
        }
    },

    "script": {
        "source": script,
        "lang": "painless"

    }

}

update_response = logserver.update_by_query(index=INDEX, body=update_body)

有关更多信息,请参见此official documentation

关于python - 使用elasticserch dsl更新elasticsearch数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49045181/

相关文章:

python - Python 3 中的 HTML 解析文本

elasticsearch - Elasticsearch Interpreter无法连接到数据库

elasticsearch - 询问有关本体和graphdb的问题

python - 如何过滤非空值elasticsearch?

c# - 是否有一个 API 可以根据您的查询搜索返回多少结果?

python - 如何检查生成器是否至少有 N 个元素

python - 如何在 Python 列表中的特定元素之后删除列表中的元素(切片不适用)

python - Django 模型实例仅在再次调用 objects.get() 后更新(DRF 测试用例)

elasticsearch - 使用 docker compose 时使用空格传递 ES_JAVA_OPTS 变量

python - ElasticSearch建议者全文搜索