使用查询DSL查询以查看字段是否包含字符串

时间:2019-03-13 15:48:54

标签: elasticsearch elastic-stack elasticsearch-dsl

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

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

我是Query DSL的新手,您可以帮助我创建查询吗?

此外,将其称为查询DSL是否合适?我什至不确定措词是否正确。

1 个答案:

答案 0 :(得分:0)

好吧!回想我自己的问题。

我最初的问题源于对field_namefield_name.keyword的不了解。在此处阅读有关关键字的信息:What's the difference between the 'field' and 'field.keyword' fields in Kibana?

解决方案1 ​​

这是我最终使用的查询。我使用了正则表达式查询。我发现this article对于找出正则表达式的语法很有用:

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

解决方案2

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