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".