Исключение Elasticsearch 1.2.1: отображение корневого типа не пусто после разбора

После обновления до Elasticsearch 1.2.1 я продолжаю получать следующее исключение при следующем отображении:

{
    "tags": {
        "properties": {
            "tags": {
                "type": "string",
                "index": "not_analyzed"
            }
        }
    }
}

Это исключение:

Caused by: org.elasticsearch.index.mapper.MapperParsingException: Root type mapping not empty after parsing! Remaining fields: [tags : {properties={tags={index=not_analyzed, type=string}}}]
    at org.elasticsearch.index.mapper.DocumentMapperParser.parse(DocumentMapperParser.java:265)
    at org.elasticsearch.index.mapper.DocumentMapperParser.parseCompressed(DocumentMapperParser.java:189)
    at org.elasticsearch.index.mapper.MapperService.parse(MapperService.java:387)
    at org.elasticsearch.index.mapper.MapperService.merge(MapperService.java:253)
    at org.elasticsearch.cluster.metadata.MetaDataCreateIndexService$2.execute(MetaDataCreateIndexService.java:363)

Почему это?

Ответ 1

@Mark, похоже, это ошибка в 1.2.X. Было несколько других, которые сообщали о подобных проблемах, я буду ссылаться на билеты ниже. Похоже, что они затягиваются в синтаксисе для сопоставлений в 1.2.X, но они, похоже, вызвали некоторые проблемы с ранее действительными сопоставлениями. Ваш пример.

Я предлагаю вам открыть отчет об ошибке - больше энергии в цифрах. С удовольствием звоню, говоря "я тоже", если вы откроете билет, так как я воссоздал проблему на 1.2.1.

На данный момент я смог выполнить следующие действия, которые, как я считаю, дают вам желаемый результат:

curl -XPUT localhost:9200/yourindexname -d 
'{
   "mappings":
   {
    "tags":
      {
       "properties":
         {
          "tags":
            {
             "type":"string",
             "index":"not_analyzed"
            }
          }
        }
    }
}'

Билеты:

https://github.com/elasticsearch/elasticsearch/issues/6414

https://github.com/elasticsearch/elasticsearch/issues/6304

https://github.com/elasticsearch/elasticsearch/issues/6415

Ответ 2

Это поможет вам

вы захотите, чтобы вы

curl -XPUT localhost:9200/new_index -d '
{
  "mappings": { 
    "tags": {
      "properties": {
        "tags": { 
           "type":"string",
           "index":"not_analyzed"
        }
      }
    }
  }
}'

или вы также можете сделать это

curl -XPUT localhost:9200/new_index/new_index_type/_mappings -d '
{
  "new_index_type": {
    "properties": {
      "tags": {
        "type": "string",
        "index": "not_analyzed"
      }
    }
  }
}'

Ответ 3

У меня была такая же проблема, потому что у меня были сопоставления с одним типом в каталоге эластичных config/mappings. Удаление файла сопоставления передало мою проблему.