Jordi
Jordi

Reputation: 23277

elasticsearch doesn't update documents

I'm facing up with a trouble related with document updatings.

I'm able to index(create) documents and they are correctly added on index.

Nevertheless, when I'm trying to update one of them, the operation is not made, the document is not updated.

When I first time add the document it's like:

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

This is the code I'm using in order to build UpdateRequest:

this.elasticsearchResources.getElasticsearchClient()
 .prepareUpdate()
 .setIndex(this.user.getMe().getUser())
 .setType(type)
 .setId(id.toString())
 .setDoc(source)
 .setUpsert(source)
 .setDetectNoop(true);

I've also been able to debug which's the content of this request begore sending it to elasticsearch. The document is:

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

As you can see the only difference is metainfos is empty when I try to update the document.

After having performed this update request the document is not updated. I mean the content of metainfos keeps as before:

#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
      }
    } ]
  }
}

I don't quite figure out what's wrong. Any ideas?

Upvotes: 0

Views: 603

Answers (1)

Hosar
Hosar

Reputation: 5292

ElasticSearch will not update an empty object. You can try with:
null "metainfos":null
or "metainfos":"ceeaceaaaceeaceaaaceeaceaaaceeaaceaaaceeabceaaa":[]

to clean the field.

Upvotes: 1

Related Questions