折叠字段“xxx”的未知类型,仅接受关键字和数字错误
unknown type for collapse field `xxx`, only keywords and numbers are accepted error
如果我在下面的查询中添加一个 collapse 子句,则错误
"unknown type for collapse aircraft_type_search
, only keywords
and numbers are accepted"
返回。
{
"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' ]
但这导致了错误。
AWS Elastic Search 服务 运行 上的 ES7.1 通过 elasticsearch php sdk。
如果我删除 collapse 子句,查询工作正常。
关于为什么这不起作用的任何想法?
这是因为如错误所述,折叠仅适用于关键字和数字字段。
您有两个解决方案:
- 在创建索引时提供字段的关键字映射
PUT my-index
{
"mappings": {
"properties": {
"aircraft_type_search" : {
"type": "keyword"
}
}
}
}
- 使用包含文本和关键字的 Elastic 默认映射,并在查询中调用关键字
:
"collapse": {
"field": "aircraft_type_search.keyword"
}
为了选择最佳解决方案,您必须了解什么是文本或关键字类型。如果你不想深化主题,最简单的方法是解决方案2。
如果我在下面的查询中添加一个 collapse 子句,则错误
"unknown type for collapse
aircraft_type_search
, only keywords and numbers are accepted"
返回。
{
"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' ]
但这导致了错误。
AWS Elastic Search 服务 运行 上的 ES7.1 通过 elasticsearch php sdk。
如果我删除 collapse 子句,查询工作正常。
关于为什么这不起作用的任何想法?
这是因为如错误所述,折叠仅适用于关键字和数字字段。
您有两个解决方案:
- 在创建索引时提供字段的关键字映射
PUT my-index
{
"mappings": {
"properties": {
"aircraft_type_search" : {
"type": "keyword"
}
}
}
}
- 使用包含文本和关键字的 Elastic 默认映射,并在查询中调用关键字 :
"collapse": {
"field": "aircraft_type_search.keyword"
}
为了选择最佳解决方案,您必须了解什么是文本或关键字类型。如果你不想深化主题,最简单的方法是解决方案2。