Opensearch 术语查询通配符

问题描述 投票:0回答:1

我正在运行以下开放搜索查询。

有时我会过滤某个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?>"]
          }
        }
      ]
    }
  },
elasticsearch opensearch
1个回答
0
投票

您需要使用通配符查询。例如

{
"size": 0,
"query": {
    "bool": {
        "filter": [
            {
                "range": {
                    "@timestamp": {
                        "gte": "%s",
                        "lte": "%s",
                        "format": "yyyy-MM-dd"
                    }
                }
            },
            {
                "wildcard": {
                    "pname.keyword": {
                        "value" : "p-*"
                    }
                }
            }
        ]
    }
}

}

© www.soinside.com 2019 - 2024. All rights reserved.