json массив со строкой и объектами внутри отображения набора в Elasticsearch - PullRequest
0 голосов
/ 21 апреля 2020

вот два jsons:

json 1:

{
  "organization": [
    "Univ Philippines",
    {
      "pref": "Y",
      "content": "University of the Philippines System"
    },
    {
      "pref": "Y",
      "content": "University of the Philippines Diliman"
    }
  ]
}

json 2:

{
   "organization": "Univ Philippines"
}

Мне нужно проиндексировать их в Elasticsearch. как установить organization отображение поля?

Я пробовал string и object типа, но все не удалось.

PUT sci_test
{
  "mappings": {
    "sci":{
      "properties": {
        "organization":{
          "type": "object"
        }
      }
    }
  }
}
PUT sci_test/sci/1
{
  "organization": [
    "Univ Philippines",
    {
      "pref": "Y",
      "content": "University of the Philippines System"
    },
    {
      "pref": "Y",
      "content": "University of the Philippines Diliman"
    }
  ]
}

error info:
{
  "error": {
    "root_cause": [
      {
        "type": "mapper_parsing_exception",
        "reason": "object mapping for [organization] tried to parse field [null] as object, but found a concrete value"
      }
    ],
    "type": "mapper_parsing_exception",
    "reason": "object mapping for [organization] tried to parse field [null] as object, but found a concrete value"
  },
  "status": 400
}

1 Ответ

1 голос
/ 21 апреля 2020

Все поля должны быть одного типа. Вы не можете смешивать строку с объектом

"Univ Philippines",                                      --> text
 {                                                       --> object
      "pref": "Y",
      "content": "University of the Philippines System"
 }"

Вам необходимо определить «Univ Philippines» как «Университет»: «Univ Philippines» (добавить ключ «University» et c).

...