#elasticsearch #kibana #elastic-stack #elasticsearch-7
#elasticsearch #kibana #эластичный стек #elasticsearch-7
Вопрос:
Я хочу преобразовать тип данных поля из long
в text
. У меня есть поле с отображением
"shopId": {
"type": "long"
}
Сначала я проверил некоторые документы, такие как:
{"shopId": "25"},{"shopId": "26"},{"shopId": "27"}
Затем я добавил еще одно поле с типом text
:
{
"anotherShopId":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
}
}
Итак, теперь мое отображение / схема выглядят следующим образом:
{
"sanchitindex":{
"aliases":{
},
"mappings":{
"properties":{
"anotherShopId":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"shopId":{
"type":"long"
}
}
},
"settings":{
"index":{
"creation_date":"1612778764965",
"number_of_shards":"1",
"number_of_replicas":"1",
"uuid":"S0iqrEIKS96XMnRgXkGsiQ",
"version":{
"created":"7030199"
},
"provided_name":"sanchitindex"
}
}
}
}
Я пытаюсь перенести shopId
значения на anotherShopId
использование API переиндексации.
POST http://localhost:9200/sanchitindex/_reindex
{
"source": {
"index": "shopId"
},
"dest": {
"index": "anotherShopId"
},
"script": {
"inline": "ctx._source.shopId = String.valueOf(ctx._source.shopId)"
}
}
Но я не смог этого сделать, так как получаю следующий ответ:
{
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "Rejecting mapping update to [sanchitindex] as the final mapping would have more than 1 type: [_doc, _reindex]"
}
],
"type": "illegal_argument_exception",
"reason": "Rejecting mapping update to [sanchitindex] as the final mapping would have more than 1 type: [_doc, _reindex]"
},
"status": 400
}
Версия: 7.3.1
Есть ли какой-либо другой способ переноса данных из long
в text
?
Ответ №1:
Убедитесь, что вы ориентируетесь POST http://localhost:9200/_reindex
(без имени индекса) вместо POST .../sanchitindex/_reindex
.
Выше была попытка добавить новый _type
с именем «_reindex», который противоречит требованию одного типа сопоставления для каждого индекса, поэтому сообщение об ошибке гласит, что
окончательное сопоставление будет иметь более 1 типа