elasticsearch - 使用 Query DSL 查询字段是否包含字符串

标签 elasticsearch elastic-stack elasticsearch-dsl

我正在尝试为包含字符串“pH”的字段过滤 Kibana。该字段名为 extra.monitor_value_name .潜在值的示例是 Temperature_ABC01 , DO_ABC01 , 或 pH_ABC01 .

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

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

另外,将其称为 Query DSL 是否合适?我什至不确定正确的措辞。

最佳答案

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

我最初的问题源于不知道 field_name对比 field_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

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

关于elasticsearch - 使用 Query DSL 查询字段是否包含字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55146006/

相关文章:

elasticsearch - Elasticsearch 多重匹配 : Is there a way to search all fields except one?

elasticsearch - 如何在Logstash中编写grok模式

elasticsearch - Tomcat 日志的 Logstash GROK 过滤器

elasticsearch - Elasticsearch日期查询。在某个月出生的人

elasticsearch - 使用bool而不是不使用 Elasticsearch 查询

java - 使用 Spring Data ElasticSearch 进行全文搜索

amazon-web-services - Docker容器启动后立即退出

Django Haystack ElasticSearch InvalidJsonResponseError : <Response [404]>

centos - logstash 配置如何工作

java - 通过Java API进行Elasticsearch查询