【发布时间】:2013-07-19 01:12:30
【问题描述】:
我在 Elasticsearch 中索引了一个文档,如下所示:
{
_parent: chow-demo
_index: prototype_2013.01.02
_type: chow-clfg
_id: Nx4JcvyxTPujkyy0Jq5BNw
_score: 11.600378
_source: {
chow-clfg: {
@type: chow-clfg
clfg: Cg5iV00z4woYAAAARQ0
@timestamp: 2013-01-02T06:26:00.000Z
count: 1
}
}
}
我尝试通过以下命令更新计数字段:
curl -XPOST 'localhost:9200/prototype_2013.01.02/chow-clfg/Nx4JcvyxTPujkyy0Jq5BNw/_update' -d '{"script":"ctx._source.chow-clfg.count+=num","params":{"num":1}}'
但是我收到了以下错误:
{"error":"RemoteTransportException[[Vesta][inet[/10.15.78.249:9300]][update]]; nested: DocumentMissingException[[prototype_2013.01.02][0] [chow-clfg][Nx4JcvyxTPujkyy0Jq5BNw]: document missing]; ","status":404}
我到底做了哪些遗漏的事情?我在http://www.elasticsearch.org/guide/reference/api/update.html 关注文档,但它不起作用。
另外,我包含了父字段:
curl -XPOST 'localhost:9200/prototype_2013.01.02/chow-clfg/Nx4JcvyxTPujkyy0Jq5BNw/_update' -d '{"parent":"chow-demo","script":"ctx._source.chow-clfg.count+=num","params":{"num":1}}'
它仍然没有工作。谁能帮我解决这个错误?
【问题讨论】:
-
您确定要更新的文档存在吗?
-
肯定的;它必须存在。不知何故,文档并没有真正显示应该如何清晰索引的语法。或者我可能误读了文档。
-
试试:
curl -XGET 'localhost:9200/prototype_2013.01.02/chow-clfg/Nx4JcvyxTPujkyy0Jq5BNw',输出是什么? .另外,你用的是ES 0.19+,对吧? -
我正在使用 _ttl,因此我的文档不会超过 30 分钟。我查询了一个现有的 id,它给出了: {"_index":"prototype_2013.01.03","_type":"chow-clfg","_id":"XQZc6tooQwG8GZhz9e-MaQ","exists":false} 但是当我进行搜索查询,我能够找到该文档。为什么会这样?
-
索引时您是否使用
routing?如果是,您需要在使用-XGET时提供此路由值。
标签: elasticsearch