Luc*_*uke 17 full-text-search elasticsearch
我试图了解如何更新Elasticsearch中的索引文档.我不明白它是如何工作的?什么是ctx该API指的是在做什么?假设您有一个包含嵌套文档的文档,您需要做些什么来更新它?
删除文档然后索引"更新"版本与普通更新之间有什么区别?
imo*_*tov 36
更新请求从elasticsearch检索源,修改它并将其索引回elasticsearch.如果您已经拥有使用更新的文档副本,那就没什么意义了.将新版本编入索引通常会更快.但是,如果您没有随时可用的文档但是您知道要对文档进行哪些更改,则使用更新可能更有效.例如,如果我没有汽车文档的副本,但我想添加一个新的创建者,我可以这样做:
curl -XDELETE localhost:9200/test
curl -XPUT localhost:9200/test -d '{
"settings": {
"index.number_of_shards": 1,
"index.number_of_replicas": 0
},
"mappings": {
"car": {
"properties": {
"creators" : {
"type": "nested",
"properties": {
"name": {"type":"string"}
}
}
}
}
}
}
'
curl -XPOST localhost:9200/test/car/1 -d '{
"creators": [{
"name": "Steve"
}]
}
'
echo
curl -XPOST localhost:9200/test/car/1/_update -d '{
"script" : "ctx._source.creators += new_creator",
"params" : {
"new_creator" : {"name": "John"}
}
}'
echo
curl "localhost:9200/test/car/1?pretty=true"
echo
Run Code Online (Sandbox Code Playgroud)
在更新脚本中ctx是一个特殊变量,允许您访问要更新的对象的源.该ctx._source是源写的版本.您可以在脚本中修改此文档,修改后的源将作为新版本的文档保留.
| 归档时间: |
|
| 查看次数: |
16871 次 |
| 最近记录: |