gpt4 book ai didi

elasticsearch - 在 Elasticsearch 中更新索引文档

转载 作者:行者123 更新时间:2023-11-29 02:44:00 25 4
gpt4 key购买 nike

我想了解您如何在 Elasticsearch 中更新索引文档。我不明白它是如何工作的? API 所指的 ctx 是做什么的?假设您有一个包含嵌套文档的文档,您需要做什么才能更新它?

删除文档然后索引“更新”版本与普通更新有什么区别?

最佳答案

更新请求从 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

在更新脚本中,ctx 是一个特殊的变量,它允许您访问要更新的对象的源。 ctx._source 是源代码的可写版本。您可以在脚本中修改此文档,修改后的源将作为文档的新版本持久化。

关于elasticsearch - 在 Elasticsearch 中更新索引文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15722197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com