#elasticsearch
#elasticsearch
Вопрос:
Я пытаюсь определить сопоставление в elasticsearch, в котором _id будет установлен на одно из полей свойства в сопоставлении. Поэтому каждый раз, когда я отправляю данные, он должен автоматически извлекать это поле и устанавливать для него значение _id. Но при сохранении данных каждый раз генерируется новый случайный _id. Это правильный способ установить _id при настройке сопоставлений в elasticsearch.
PUT /index00001
{
"mappings": {
"_meta":{
"_id" : "userid"
},
"properties": {
"userid": {
"type": "text"
},
"nickname": {
"type": "text"
}
}
},
"settings" : {
"number_of_shards" : 1,
"number_of_replicas" : 0
}
}
POST /index00001/_doc
{
"userid": "6009001",
"nickname": "nick"
}
{
"took" : 438,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "index00001",
"_type" : "_doc",
"_id" : "IeKqnn0BuUqEU88H_tlq",
"_score" : 1.0,
"_source" : {
"userid" : "6009001",
"nickname" : "nick"
}
},
{
"_index" : "index00001",
"_type" : "_doc",
"_id" : "JeKrnn0BuUqEU88HNtnu",
"_score" : 1.0,
"_source" : {
"userid" : "6009001",
"nickname" : "amit"
}
}
]
}
}
Почему мой _id не установлен в поле userid из свойства
Это версия elasticsearch — 7.8.0 lucene_version -8.5.1
Комментарии:
1. Вы посмотрели на этот поток. discuss.elastic.co/t/creating-a-custom-id-in-a-mapping/65460 это может помочь.
Ответ №1:
Раньше было возможно, чтобы ES автоматически использовала значение поля в качестве идентификатора документа в ES 1.X, но это больше невозможно с ES 2.0.
Теперь вам нужно явно передать идентификатор ваших документов при их индексации, иначе он будет сгенерирован для вас.
Комментарии:
1. повезло с этим?