Как установить _id для поля из свойства в сопоставлении в elasticsearch

#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. повезло с этим?