Подтвердить что ты не робот

Невозможно создать два типа для одного и того же индекса elasticsearch & Kibana

Я новичок в elasticsearch и kibana

Я делаю некоторые упражнения с elasticsearch (создайте индекс, типы и документы..)

Я создал индекс "бизнес" с типом "здание"

put /business/building/217
{
  "adresse":"11 Pen Ave",
  "floors":5,
  "offices":7,
  "loc":{
    "lat":40.693479,
    "lon":-73.983854
  }
}

он работает смешно, но когда я попытался создать другой тип, подобный этому

put /business/employee/330
{
  "name":"Richard Bell",
  "title":"Senior Accountant",
  "salar_usd":115000.00,
  "hiredate":"Jan 19, 2013"
}

то я получил эту ошибку

{
  "error": {
    "root_cause": [
      {
        "type": "illegal_argument_exception",
        "reason": "Rejecting mapping update to [business] as the final mapping would have more than 1 type: [employee, building]"
      }
    ],
    "type": "illegal_argument_exception",
    "reason": "Rejecting mapping update to [business] as the final mapping would have more than 1 type: [employee, building]"
  },
  "status": 400
}
4b9b3361

Ответ 1

Вероятно, вы используете версию Elasticsearch версии 6, и с этой версии ES не позволяет создавать более одного типа в любом заданном индексе.

Вам необходимо сохранить каждый тип документа внутри выделенного индекса, например

PUT /business/building/217
{
  "adresse":"11 Pen Ave",
  "floors":5,
  "offices":7,
  "loc":{
    "lat":40.693479,
    "lon":-73.983854
  }
}

PUT /employees/employee/330
{
  "name":"Richard Bell",
  "title":"Senior Accountant",
  "salar_usd":115000.00,
  "hiredate":"Jan 19, 2013"
}

Ответ 2

см. https://www.elastic.co/guide/en/elasticsearch/reference/6.2/removal-of-types.html для получения дополнительной информации.

Elasticsearch 6.x Индексы, созданные в 6.x, допускают только один тип для каждого индекса. Любое имя может быть использовано для типа, но может быть только одно. Предпочтительным именем типа является _doc, поэтому индексные API имеют тот же путь, что и в 7.0: PUT {index}/_ doc/{id} и POST {index}/_ doc