{
"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
映射的好处。