I am setting a Bulk request to ElasticSearch and specifying the shard to route to.
But when I run it, the documents get sent to different shards.
Is this a bug i
@Henley Chiu has given the correct answer, I add one detail:
_routing
or routing
field for each individual document when bulkrouting
So, you'd better use routing
for better future compatibility.
So adding the "routing" parameter to the end of the URL doesn't work.
I need to add the "_routing" field to the actual document fields to specify which shard it will go to.
Very unintuitive, and I wish ElasticSearch would've documented this! Sometimes I wish I just chose Solr :*(
Hope this helps anyone else looking for this in the future
curl -XPOST 'http://192.168.1.115:9200/_bulk?routing=a' -d '
{ "index" : { "_index" : "articles", "_type" : "article", "_id" : "1", "_routing" : "b"} }
{ "title" : "value1" }
{ "delete" : { "_index" : "articles", "_type" : "article", "_id" : "2", "_routing" : "b" } }
{ "create" : { "_index" : "articles", "_type" : "article", "_id" : "3", "_routing" : "b" } }
{ "title" : "value3" }
{ "update" : {"_id" : "1", "_type" : "article", "_index" : "index1", "_routing" : "b"} }
{ "doc" : {"field2" : "value2"} }'