Elasticsearch Java Api: установить поле как _id

Я хочу спросить, если уникальное поле _id назначаться определенным полем в документе. Я вижу, с отдыхом, это может быть достигнуто путем path:

{
  "tweet": {
    "_id": {
      "path": "post_id"
    }
  }
}

Но если я хочу сделать это с помощью API Java, есть ли способ достичь этого?

Map<String, Object> MapA= new HashMap<String, Object>();
MapA=MapProcessor(MapA);

client.prepareIndex("index","type").setSource(MapA).execute().actionGet();

Как я могу изменить свой код, чтобы назначить определенное поле в карте, чтобы стать _id этого типа?

1 ответ

Решение

Просто укажите идентификатор при индексации, вот так

Map<String, Object> MapA= new HashMap<String, Object>();
MapA=MapProcessor(MapA);

client.prepareIndex("index","type",MapA.get("post_id")).setSource(MapA).execute().actionGet();

Если вы не хотите делать это, добавьте это как отображение тогда.

{
    "tweet" : {
        "_id" : {
            "path" : "post_id"
        }
    }
}

если вы добавите поле post_id в asticsearch, то оно тоже станет "_id".

Другие вопросы по тегам