我的查询是这样的:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"term": {
"online": 1
}
},
{
"terms": {
"mediaType": "flash"
}
}
]
}
}
}
}
}
它引发了一个QueryParsingException [[comos_v2] [terms]过滤器不支持[mediaType]] ,其中的字段是" mediaType"在映射中确实不存在。 我的问题是为什么术语过滤器不会引发异常?
答案 0 :(得分:24)
以上不是有效的查询DSL。在上面的Terms filter中,“mediaType”字段的值应该是一个数组
应该如下:
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"term": {
"online": 1
}
},
{
"terms": {
"mediaType": ["flash"]
}
}
]
}
}
}
}
}
答案 1 :(得分:0)
这只是“术语”与“术语”的问题。很容易错过它的复数/单方面。
我在这个查询中遇到了一个非常相似的错误,我试图删除一个特定的区域:
'{"query":{"terms":{"zoneid":25070}}}'
运行上述查询时出现错误。
一旦将“terms”更改为“term”,查询就会毫无问题地执行,如下所示:
'{"query":{"term":{"zoneid":25070}}}'
答案 2 :(得分:0)
它是 2021 年,我使用 .keyword 进行精确文本匹配,但您也可以轻松省略:
{"query":
{"bool":
{"must":
[
{"term":
{"variable1.keyword":var1Here}
},
{"term":
{"variable2.keyword":var2Here}
}
]
}
}
}