неизвестный тип для поля свертывания `xxx`, допускаются только ключевые слова и цифры - PullRequest
0 голосов
/ 03 апреля 2020

Если я добавлю условие свертывания к следующему запросу, ошибка

"неизвестный тип для свертки aircraft_type_search, принимаются только ключевые слова и цифры"

вернул.

 {
"query": {
  "bool": {
    "must": {
      "bool": {
        "must": [
          {
            "match": {
              "aircraft_type_search": {
                "query": "piper"
              }
            }
          }
        ]
      }
    },
    "filter": {
      "bool": {
        "must": {
          "term": {
            "display_picture": "yes"
          }
        }
      }
    }
  }
},
"collapse": {
  "field": "aircraft_type_search"
}
}

Я также попытался 'aircraft_id' в качестве поля свертывания, так как это целое число:

'aircraft_id' => [ 'type' => 'integer', "null_value" => "-1", "ignore_malformed" => 'true', 'include_in_all' => 'false', 'index' => 'not_analyzed' ]

, но это привело к ошибке.

ES7.1 на AWS Elasti c Служба поиска, работающая черезasticsearch php sdk.

Если я удалю предложение свертывания, запрос будет работать нормально.

Любые идеи о том, почему это не работает?

1 Ответ

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

Это потому, что коллапс только для полей ключевых слов и чисел, как говорится в ошибке.

У вас есть два решения:

  1. Предоставьте отображение ключевых слов вашего поля при создании индекса

    PUT my-index
    {
      "mappings": {
        "properties": {
          "aircraft_type_search" : {
            "type": "keyword"
          }
        }
      }
    }

Используйте отображение Elasti c по умолчанию, которое включает текст и ключевое слово, и вызовите ключевое слово в запросе:
    "collapse": {
        "field": "aircraft_type_search.keyword"
      }

Чтобы выбрать лучшее решение, вы должны понять, что такое текст или тип ключевого слова. Если вы не хотите углублять тему, самый простой способ - это решение 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...