7

我正在尝试为包含字符串“pH”的字段过滤 Kibana。该字段称为extra.monitor_value_name。潜在值的示例是Temperature_ABC01DO_ABC01pH_ABC01

Kibana 的 Elasticsearch Query DSL 似乎没有“包含字符串”,所以我需要自定义查询。

我是 Query DSL 的新手,你能帮我创建查询吗?

另外,称它为Query DSL 是否合适?我什至不确定措辞是否恰当。

4

2 回答 2

6

好的!回过头来回答我自己的问题。

我最初的问题源于不知道field_namevs field_name.keyword。在此处阅读有关关键字的信息:Kibana 中的“field”和“field.keyword”字段有什么区别?

解决方案 1

这是我最终使用的查询。我使用了正则表达式查询。我发现这篇文章有助于找出正则表达式的语法:

{
  "query": {
    "regexp": {
      "extra.monitor_value_name.keyword": "pH.*"
    }
  }
}

解决方案 2

在没有 Query DSL 的情况下,我可以过滤的另一种方法是在搜索字段中输入:extra.monitor_value_name.keyword:pH*. 需要注意的一件有趣的事情是.keyword这种方法似乎没有必要。我不确定为什么。

于 2019-03-16T01:39:10.660 回答
2

在使用 Elasticsearch Query DSL 的过滤器中试试这个:

{
  "query": {
    "wildcard": {
      "extra.monitor_value_name": {
        "value": "pH.*"
      }
    }
  }
}
于 2021-12-24T10:20:33.143 回答