【问题标题】:elasticsearch doesn't update documentselasticsearch 不更新文档
【发布时间】:2016-12-16 22:44:32
【问题描述】:

我遇到了与文档更新相关的问题。

我能够索引(创建)文档,并且它们已正确添加到索引中。

但是,当我尝试更新其中一个时,没有进行操作,文档也没有更新。

当我第一次添加文档时是这样的:

{
        "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
      }
    } ]
  }
}

我不太明白出了什么问题。有什么想法吗?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    ElasticSearch 不会更新空对象。你可以试试:
    null "metainfos":null
    "metainfos":"ceeaceaaaceeaceaaaceeaceaaaceeaaceaaaceeabceaaa":[]

    清理场地。

    【讨论】:

    • 让我更深入地了解您的答案。尽管如此,我第一次创建文档时,这个属性metainfos 是一个空数组而不是null valuemetainfos: [])。这可能吗?(我现在无法测试它...)
    • 这取决于你的映射,但是空数组也可以。
    • 谢谢@Hosar。你已经写下了"it depends on your mapping"。你能详细说明一下你的意思吗?
    猜你喜欢
    • 1970-01-01
    • 2018-01-31
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多