我正在运行以下开放搜索查询。
有时我会过滤某个pname,有时我想获取所有pname的所有数据(即没有过滤器)
我不想定义两个查询,一个带有
terms
过滤器,一个没有它,我想要一个查询。
我以为我可以为此传递一个
["*"]
,但这似乎不起作用。我所有的 pname 都有一个前缀 p- 所以我也认为我可以传入 ["p-*"]
但不幸的是这也不起作用。
{
"size": 0,
"query": {
"bool": {
"filter": [
{
"range": {
"@timestamp": {
"gte": "%s",
"lte": "%s",
"format": "yyyy-MM-dd"
}
}
},
{
"terms": {
"pname.keyword": ["<wildcard to get all pnames?>"]
}
}
]
}
},
您需要使用通配符查询。例如
{
"size": 0,
"query": {
"bool": {
"filter": [
{
"range": {
"@timestamp": {
"gte": "%s",
"lte": "%s",
"format": "yyyy-MM-dd"
}
}
},
{
"wildcard": {
"pname.keyword": {
"value" : "p-*"
}
}
}
]
}
}
}