不清楚如何使用 python elasticsearch 更新 ElasticSearch
Not clear how to upsert ElasticSearch using python elasticsearch
在此处查看类似示例:
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})
但现在假设目标是追加到数组或增加先前的值(无需先获取文档)。
如果您按照官方要求,这在 documentation:
POST /website/pageviews/1/_update
{
"script" : "ctx._source.views+=1",
"upsert": {
"views": 1
}
}
我想知道如何完成附加到数组(只是简单地添加到默认列表)。看来 elasticsearch 自己的例子比我能找到的任何专门为 Python.
的例子都简单
我之前读过 post 一篇关于人们只是使用 python 请求来做 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"
}
}
)
更多关于update api
这里的标签是一个数组,我将 search 附加到它。您还需要为此启用脚本,或者您可以将脚本放入文件中并将该文件放入 config/scripts
文件夹中。语法可能因 ES 版本而异。如果它不起作用,请告诉我。
在此处查看类似示例:
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})
但现在假设目标是追加到数组或增加先前的值(无需先获取文档)。
如果您按照官方要求,这在 documentation:
POST /website/pageviews/1/_update
{
"script" : "ctx._source.views+=1",
"upsert": {
"views": 1
}
}
我想知道如何完成附加到数组(只是简单地添加到默认列表)。看来 elasticsearch 自己的例子比我能找到的任何专门为 Python.
的例子都简单我之前读过 post 一篇关于人们只是使用 python 请求来做 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"
}
}
)
更多关于update api
这里的标签是一个数组,我将 search 附加到它。您还需要为此启用脚本,或者您可以将脚本放入文件中并将该文件放入 config/scripts
文件夹中。语法可能因 ES 版本而异。如果它不起作用,请告诉我。