Root в определении сопоставления возникла проблема с неподдерживаемыми параметрами - PullRequest
1 голос
/ 07 апреля 2020

Я отправляю сообщение в мой почти созданный сервис Elasticsearch, но не могу опубликовать сопоставление. Я не могу определить, какая часть не поддерживается. Любые предложения?

{
    "mappings": {
        "employees": {
            "properties": {
                "FirstName": {
                    "type": "text"
                },
                "LastName": {
                    "type": "text"
                },
                "Designation": {
                    "type": "text"
                },
                "Salary": {
                    "type": "integer"
                },
                "DateOfJoining": {
                    "type": "date",
                    "format": "yyyy-MM-dd"
                },
                "Address": {
                    "type": "text"
                },
                "Gender": {
                    "type": "text"
                },
                "Age": {
                    "type": "integer"
                },
                "MaritalStatus": {
                    "type": "text"
                },
                "Interests": {
                    "type": "text"
                }
            }
        }
    }
}

Я последовательно получаю эту ошибку возвращается.

{
    "error": {
        "root_cause": [
            {
                "type": "mapper_parsing_exception",
                "reason": "Root mapping definition has unsupported parameters:  [employees : {properties={Designation={type=text}, Salary={type=integer}, MaritalStatus={type=text}, DateOfJoining={format=yyyy-MM-dd, type=date}, Address={type=text}, FirstName={type=text}, LastName={type=text}, Gender={type=text}, Age={type=integer}, Interests={type=text}}}]"
            }

Использование версии 7.6.2

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Поскольку вы не указали свою версию Elasticsearch, которую я также спросил в своем комментарии,

У меня есть несколько версий Elasticsearch, и, поскольку вы используете text, я начал с Elasticsearch 7 as, вы также указали employees в своем отображении, что создало подозрение, поскольку это обычно определяется в более старых версиях, где определены типы.

Пожалуйста, см. удаление типов, которые официальный do c для получения дополнительной информации, и она не будет полностью удалена в следующей основной версии 8.X

Я смог воспроизвести проблему с Elasticsearch 7.6 и получил ту же ошибку:

 "error": {
        "root_cause": [
            {
                "type": "mapper_parsing_exception",
                "reason": "Root mapping definition has unsupported parameters:  [employees : {properties={Designation={type=text}, Salary={type=integer}, MaritalStatus={type=text}, DateOfJoining={format=yyyy-MM-dd, type=date}, Address={type=text}, FirstName={type=text}, LastName={type=text}, Gender={type=text}, Age={type=integer}, Interests={type=text}}}]"
            }
        ],
        "type": "mapper_parsing_exception",
        "reason": "Failed to parse mapping [_doc]: Root mapping definition has unsupported parameters:  [employees : {properties={Designation={type=text}, Salary={type=integer}, MaritalStatus={type=text}, DateOfJoining={format=yyyy-MM-dd, type=date}, Address={type=text}, FirstName={type=text}, LastName={type=text}, Gender={type=text}, Age={type=integer}, Interests={type=text}}}]",
        "caused_by": {
            "type": "mapper_parsing_exception",
            "reason": "Root mapping definition has unsupported parameters:  [employees : {properties={Designation={type=text}, Salary={type=integer}, MaritalStatus={type=text}, DateOfJoining={format=yyyy-MM-dd, type=date}, Address={type=text}, FirstName={type=text}, LastName={type=text}, Gender={type=text}, Age={type=integer}, Interests={type=text}}}]"
        }
    },
    "status": 400
}

Решение

Просто удалите employee из вашего mapping и используйте приведенное ниже отображение.

{
    "mappings": {
        "properties": { --> note `employees` removed.
            "FirstName": {
                "type": "text"
            },
            "LastName": {
                "type": "text"
            },
            "Designation": {
                "type": "text"
            },
            "Salary": {
                "type": "integer"
            },
            "DateOfJoining": {
                "type": "date",
                "format": "yyyy-MM-dd"
            },
            "Address": {
                "type": "text"
            },
            "Gender": {
                "type": "text"
            },
            "Age": {
                "type": "integer"
            },
            "MaritalStatus": {
                "type": "text"
            },
            "Interests": {
                "type": "text"
            }
        }
    }
}

Над созданием индекса успешно

{
    "acknowledged": true,
    "shards_acknowledged": true,
    "index": "mustnot"
}
0 голосов
/ 07 апреля 2020

Вы, похоже, используете версию 7.x Elasticsearch, которая больше не поддерживает типы отображения . Вам просто нужно удалить employees, вот так:

{
  "mappings": {
    "properties": {
      "FirstName": {
        "type": "text"
      },
      "LastName": {
        "type": "text"
      },
      "Designation": {
        "type": "text"
      },
      "Salary": {
        "type": "integer"
      },
      "DateOfJoining": {
        "type": "date",
        "format": "yyyy-MM-dd"
      },
      "Address": {
        "type": "text"
      },
      "Gender": {
        "type": "text"
      },
      "Age": {
        "type": "integer"
      },
      "MaritalStatus": {
        "type": "text"
      },
      "Interests": {
        "type": "text"
      }
    }
  }
}
...