首页 > 解决方案 > 如何过滤具有包含子字符串的字段的文档

问题描述

我有一个包含以下字段的文档:

  "data": {
    "type": "text",
    "fields": {
      "keyword": {
        "type": "keyword",
        "ignore_above": 256
      }
    }

并且在对 kibana 执行查询时,我想过滤所有具有类似sendMessageFromAgent. 我不想执行查询,我想过滤它们。

该字段的示例如下:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><S:Body><ns2:sendMessageFromAgent xmlns:ns2="http://blahblah/"><ns2:session><ns2:id>a-session-id</ns2:id></ns2:session><ns2:userId><ns2:id>624962268835</ns2:id></ns2:userId><ns2:messages><ns2:message><ns2:text>we have some text here</ns2:text><ns2:sentTimeMillis>1288851099000</ns2:sentTimeMillis></ns2:message></ns2:messages></ns2:sendMessageFromAgent></S:Body></S:Envelope>

我尝试将以下 DSL 查询作为新的 kibana 过滤器放置,但没有返回任何内容:

{
  "wildcard": {
    "data": "*sendMessageFromAgent*"
  }
}

标签: elasticsearchquerydsl

解决方案


Easy-peasy:添加一个 kibana 过滤器并使用以下 DSL:

{
  "match": {
    "data": {
      "operator": "AND",
      "query": "sendMessageFromAgent <other-strings-if-needed>"
    }
  }
}

data这将在字段上执行全文搜索


推荐阅读