如何使用包含子字符串的字段过滤文档

时间:2020-02-29 15:57:04

标签: elasticsearch querydsl

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

  "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*"
  }
}

1 个答案:

答案 0 :(得分:0)

简单易用:添加一个kibana过滤器并使用以下DSL:

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

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