elasticsearch,upsert,Python,elasticsearch,Upsert" /> elasticsearch,upsert,Python,elasticsearch,Upsert" />

不清楚如何使用python ElasticSearch升级ElasticSearch

不清楚如何使用python ElasticSearch升级ElasticSearch,python,elasticsearch,upsert,Python,elasticsearch,Upsert,请看这里的一个类似示例: 但是现在想象一下,我们的目标是追加到数组中或增加以前的值(而不必先获取文档) 如果您接受官方请求,请访问: 我想知道如何完成对数组的追加(只是简单地添加到默认列表中)。看来elasticsearch自己的示例比我专门为Python找到的任何示例都要简单 我以前读过一篇关于人们只是使用python请求来做elasticsearch的文章,我想这可能有点道理…你可以把你的脚本放在主体参数中 from elasticsearch import Elasticsearch

请看这里的一个类似示例:

但是现在想象一下,我们的目标是追加到数组中或增加以前的值(而不必先获取文档)

如果您接受官方请求,请访问:

我想知道如何完成对数组的追加(只是简单地添加到默认列表中)。看来elasticsearch自己的示例比我专门为Python找到的任何示例都要简单


我以前读过一篇关于人们只是使用python请求来做elasticsearch的文章,我想这可能有点道理…

你可以把你的
脚本
放在
主体
参数中

from elasticsearch import Elasticsearch

es = Elasticsearch()

es.update(
    index="test",
    doc_type="test1",
    id="1",
    body={"script": "ctx._source.tags+=new_tag",
          "params": {
             "new_tag" : "search"
            }
          }
    )
更多关于


这里的标签是一个数组,我将搜索附加到它。您还需要为此启用脚本,或者您可以将脚本放入一个文件中,并将该文件放入
config/scripts
文件夹中。根据ES版本的不同,语法可能会有所不同。如果它不起作用,请告诉我。

附加到数组是什么意思?相当肯定的是,在
ctx.\u source.tags+=new\u tag
@cricket\u 007,elasticsearch文档涵盖了这一点;不是python elasticsearch api文档,除非我错过了它…elasticsearch文档中
POST
部分下的整个JSON块可以只是python api的
主体
。解决方案有帮助吗?留下了使用python elasticsearch的升级解决方案。还有一个参数。不知道如何添加
params
,虽然它是一些
url编码的东西,但我从来没有使用过它,但是您可以使用body-param,从文档中,
body–使用脚本或部分文档的请求定义,这对我来说是有效的,使用body是有效的。对于url编码的部分,可能是这样的
POST /website/pageviews/1/_update
{
   "script" : "ctx._source.views+=1",
   "upsert": {
       "views": 1
   }
}
from elasticsearch import Elasticsearch

es = Elasticsearch()

es.update(
    index="test",
    doc_type="test1",
    id="1",
    body={"script": "ctx._source.tags+=new_tag",
          "params": {
             "new_tag" : "search"
            }
          }
    )