Как создать индекс mutlitype в Elasticsearch? - PullRequest
0 голосов
/ 18 апреля 2019

На нескольких страницах документации Elasticsearch упоминается, как запросить многотипный индекс. Но я не смог создать его на первом месте.

Вот мой минимальный пример (на сервере Elasticsearch 6.x):

PUT /myindex
{
  "settings" : {
    "number_of_shards" : 1
  }
}

PUT /myindex/people/123
{
  "first name": "John",
  "last name": "Doe"
}

PUT /myindex/dog/456
{
  "name": "Rex"
}

Создание индекса и вставка кулака прошли успешно, но при попытке вставки типа собаки:

{
  "error": {
    "root_cause": [
      {
        "type": "illegal_argument_exception",
        "reason": "Rejecting mapping update to [myindex] as the final mapping would have more than 1 type: [people, dog]"
      }
    ],
    "type": "illegal_argument_exception",
    "reason": "Rejecting mapping update to [myindex] as the final mapping would have more than 1 type: [people, dog]"
  },
  "status": 400
}

Но это именно то, что я пытаюсь сделать, приятель! Наличие в моем индексе «больше 1 типа».

Знаете ли вы, что я должен изменить в своих звонках, чтобы добиться этого?

Большое спасибо.

1 Ответ

0 голосов
/ 18 апреля 2019

Несколько типов сопоставления не поддерживаются начиная с Elastic 6.0.0.См. исправление изменений для получения подробной информации.

Вы по-прежнему можете эффективно использовать несколько типов, реализуя собственное поле настраиваемого типа.

Например:

{
    "mappings": {
        "doc": {
            "properties": {
                "type": {
                    "type": "keyword"
                },
                "first_name": {
                    "type": "text"
                },
                "last_name": {
                    "type": "text"
                }

            }
        }
    }
}

Это описано в удалении типов .

...