elasticsearch - 字段可过滤但不可搜索
elasticsearch - field filterable but not searchable
使用弹性 2.3.5。有没有办法使字段可过滤但不可搜索?例如,我有一个 language
字段,其值类似于 en-US
。在 query->bool->filter->term
中设置多个过滤器,我可以在不影响分数的情况下过滤结果集,例如,仅搜索在 language
字段中具有 en-US
的文档。
但是,我想要搜索词条 en-US
到 return 的查询没有结果,因为这不是真正用于搜索的索引字段,只是为了过滤。
我可以这样做吗?
ElasticSearch 使用 _all 字段允许对整个文档进行快速 full-text 搜索。这就是为什么在所有文档 return 的所有字段中搜索 en-US 的原因是包含 'language':'en-US' 的文档。
https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-all-field.html
您可以在映射中指定 "include_in_all": false
以停用将字段包含到 _all 中。
PUT my_index
{
"mappings": {
"my_type": {
"properties": {
"title": {
"type": "string"
},
"country": {
"type": "string"
},
"language": {
"type": "string",
"include_in_all": false
}
}
}
}
}
在此示例中,在所有字段中搜索 'US' 将 return 仅在标题或国家/地区包含 US 的文档。但是您仍然可以使用语言字段过滤您的查询。
https://www.elastic.co/guide/en/elasticsearch/reference/current/include-in-all.html
使用弹性 2.3.5。有没有办法使字段可过滤但不可搜索?例如,我有一个 language
字段,其值类似于 en-US
。在 query->bool->filter->term
中设置多个过滤器,我可以在不影响分数的情况下过滤结果集,例如,仅搜索在 language
字段中具有 en-US
的文档。
但是,我想要搜索词条 en-US
到 return 的查询没有结果,因为这不是真正用于搜索的索引字段,只是为了过滤。
我可以这样做吗?
ElasticSearch 使用 _all 字段允许对整个文档进行快速 full-text 搜索。这就是为什么在所有文档 return 的所有字段中搜索 en-US 的原因是包含 'language':'en-US' 的文档。 https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-all-field.html
您可以在映射中指定 "include_in_all": false
以停用将字段包含到 _all 中。
PUT my_index
{
"mappings": {
"my_type": {
"properties": {
"title": {
"type": "string"
},
"country": {
"type": "string"
},
"language": {
"type": "string",
"include_in_all": false
}
}
}
}
}
在此示例中,在所有字段中搜索 'US' 将 return 仅在标题或国家/地区包含 US 的文档。但是您仍然可以使用语言字段过滤您的查询。 https://www.elastic.co/guide/en/elasticsearch/reference/current/include-in-all.html