在这里查看类似的示例:
https://stackoverflow.com/a/33247409/1575066 https://stackoverflow.com/a/33247409/1575066
from elasticsearch import Elasticsearch
es = Elasticsearch("localhost:9200")
es.update(index='test',doc_type='test1',id='1',body={'doc' {'username':'Tom'},'doc_as_upsert':True})
但现在想象目标是追加到数组或增加先前的值(无需先获取文档)。
如果您按照官方要求,这位于文档 https://www.elastic.co/guide/en/elasticsearch/guide/current/partial-updates.html:
POST /website/pageviews/1/_update
{
"script" : "ctx._source.views+=1",
"upsert": {
"views": 1
}
}
我想知道如何完成附加到数组(只是简单地添加到默认列表)。看来elasticsearch自己的例子比我能找到的专门针对Python的任何例子都要简单。
我之前读过一篇关于人们只是使用 python requests 来做 Elasticsearch 的文章,我认为这可能是有道理的......
你可以把你的script
在 - 的里面body
范围。
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"
}
}
)
More on 更新API https://elasticsearch-py.readthedocs.org/en/master/api.html#elasticsearch.Elasticsearch.update
这里的标签是一个数组,我正在附加search到它。此外,您还需要为此启用脚本,或者您可以将脚本放入文件中并将该文件放入其中config/scripts
文件夹。语法可能因 ES 版本而异。如果不起作用请告诉我。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)