如何使用 elasticsearch-py 插入新文档或更新旧文档



插入新文档(如果不存在)或更新(将计数器增加 1)已存在的文档的最优雅方法是什么?

这个:

res = elasticsearch.update(
        index='stories-test',
        doc_type='news',
        id=1,
        body={
            "doc":
                {
                    "author": "me",
                    "visits": 1
                },
                'doc_as_upsert': True
        },
        script={
                    "inline": "ctx._source.visits += visit",
                    "params": {
                        "visit": 1
                    }
        }
    )

解决以下错误:

RequestError: TransportError(400, u'action_request_validation_exception', u"Validation Failed: 1: can't provide both script and doc;")
您可以在

正文中包含要更新"doc"字段。

es = Elasticsearch()
doc = NewsSerializer(news).data
es.update(index="news_index", doc_type='news', id=1, body={"doc": doc})

不能同时将更新查询与文档和脚本参数一起使用。您可以使用script字段中的params字段执行所有操作。

您可以在这篇文章中找到更多信息:

弹性搜索部分更新

相关内容

  • 没有找到相关文章

最新更新