操作员不在弹性搜索的关键字类型字段中工作


{
"query": {
"match": {
"activity_type": {
"query": "video Post",
"operator": "OR"
}
}
}
}

上面的查询不是在弹性中搜索记录我有视频和帖子的数据,上面的查询是针对文本类型的字段,但不是针对关键字类型的字段。

不分析关键字字段。这意味着,在每个文档上,该字段的值都保持原样,而不是分解为几个术语。这实际上意味着您不能针对单个术语搜索该字段。仅搜索整个字段值。

例如,如果字段name具有keyword映射,并且文档具有:

{
// rest of the document
"name": "Foo Bar Baz"
// rest of the document
}

如果您的搜索是:

{
"query": {
"match": {
"name": {
"query": "Foo Bar",
"operator": "OR"
}
}
}
}

将不会检索该文档。您的查询需要是"query": "Foo Bar Baz"

问题的一个可能的解决方案是将该字段索引为text字段和keyword字段。你可以用这样的东西来做:

{
"mappings": {
"properties": {
"activity_type": {
"type": "text",
"fields": {
"raw": {
"type": "keyword"
}
}
}
}
}
}

这是在普通字段activity_type中人为创建字段.raw,其中前者具有text类型,后者具有keyword类型。

然后,您的搜索将工作,您仍然可以在人工创建的字段activity_type.raw下获得keyword映射的好处。

最新更新