как фильтровать документы с полем, содержащим подстроку - PullRequest
0 голосов
/ 29 февраля 2020

У меня есть документ, содержащий следующее поле:

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

и при выполнении запроса к кибане я хочу отфильтровать все документы, имеющие подстроку, например 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 голосов
/ 29 февраля 2020

Easy-peasy: добавьте фильтр kibana и используйте следующий DSL:

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

, который выполняет полнотекстовый поиск в поле data

...