0
我正面临与文档更新有关的麻烦。elasticsearch不更新文档
我能够索引(创建)文档,并且它们正确地添加到索引上。
尽管如此,当我试图更新其中的一个时,操作没有进行,文档没有更新。
当我第一次添加它就像文件:
{
"user" : "user4",
"timestamp" : "2016-12-16T15:00:22.645Z",
"startTimestamp" : "2016-12-16T15:00:22.645Z",
"dueTimestamp" : null,
"closingTimestamp" : null,
"matter" : "F1",
"comment" : null,
"status" : 0,
"backlogStatus" : 20,
"metainfos" : {
"ceeaceaaaceeaceaaaceeaceaaaceeaaceaaaceeabceaaa" : [ "FZ11" ]
},
"resources" : [ ],
"notes" : null
}
这是我使用,以建立UpdateRequest代码:
this.elasticsearchResources.getElasticsearchClient()
.prepareUpdate()
.setIndex(this.user.getMe().getUser())
.setType(type)
.setId(id.toString())
.setDoc(source)
.setUpsert(source)
.setDetectNoop(true);
我也能调试这是这个请求的内容开始发送给elasticsearch。该文件是:
{
"user":"user4",
"timestamp":"2016-12-16T15:00:22.645Z",
"startTimestamp":"2016-12-16T15:00:22.645Z",
"dueTimestamp":null,
"closingTimestamp":null,
"matter":"F1",
"comment":null,
"status":0,
"backlogStatus":20,
"metainfos":{
},
"resources":[
],
"notes":null
}
正如你所看到的唯一区别是metainfos
是空的,当我尝试更新文档。
执行此update request
之后,文档未更新。我的意思是metainfos
内容保持像以前一样:
#curl -XGET 'http://localhost:9200/user4/fuas/_search?pretty'
{
"took" : 2,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 1.0,
"hits" : [ {
"_index" : "living_v1",
"_type" : "fuas",
"_id" : "327c9435-c394-11e6-aa90-02420a011808",
"_score" : 1.0,
"_routing" : "user4",
"_source" : {
"user" : "user4",
"timestamp" : "2016-12-16T15:00:22.645Z",
"startTimestamp" : "2016-12-16T15:00:22.645Z",
"dueTimestamp" : null,
"closingTimestamp" : null,
"matter" : "F1",
"comment" : null,
"status" : 0,
"backlogStatus" : 20,
"metainfos" : {
>>>>>>>> "ceeaceaaaceeaceaaaceeaceaaaceeaaceaaaceeabceaaa" : [ "FZ11" ]
},
"resources" : [ ],
"notes" : null
}
} ]
}
}
我不完全弄清楚什么是错的。有任何想法吗?
让我多钻一些你的答案。不过,第一次创建一个文档时,这个属性metainfos是一个空数组而不是空值(metainfos:[])'。可能吗? (我现在无法测试它...) – Jordi
这取决于您的映射,但是是空阵列也可以。 – Hosar
谢谢@Hosar。你已经写下了''它取决于你的映射''。你能详细介绍一下你的意思吗? – Jordi