使用 Kibana 在弹性搜索中过滤消息正文

Filter message body in elastic search using Kibana

我在 Kibana UI 中有 JSON,其中包含以下信息以及其他详细信息 :--

host.name       abcd

 message        2020-07-29 03:59:19,393 -0700 INFO  [http-nio-8080-exec-2139] abchohfowhofnfnnfnwlnflw 
                CLIENT_ID=MNOPQR xysbxs

我只想过滤部分 CLIENT_ID=MNOPQR 作为 Kibana 中的搜索结果。基本上我想获得主机 abcd 上的所有 client_id 名称。

是否可以获取数据?

Kibana 的查询语言基于 Lucene 查询语法。您应该能够使用您之后的确切主机名过滤 host.name 字段,并像下面类似地使用通配符消息:

host.name: "abcd" AND message: *CLIENT_ID=MNOPQR*

您需要过滤 host.name='abcd'

然后使用管道处理器,您可以提取客户端 ID,如下所示

POST _ingest/pipeline/_simulate  
{  
  "pipeline": {  
  "description" : "parse multiple patterns",  
  "processors": [   
    {   
      "grok": {     
        "field": "message",  
        "patterns": [ "CLIENT_ID=%{NOTSPACE:client_value}" ]   
           }   
    }   
  ]    
  },   
"docs":[   
  {   
    "_source": {   
      "message": "2020-07-29 03:59:19,393 -0700 INFO [http-nio-8080-exec-2139] abchohfowhofnfnnfnwlnflw CLIENT_ID=MNOPQR xysbxs"    
    }     
  }      
  ]   
}       



And the result is 

{
  "docs" : [
    {
      "doc" : {
        "_index" : "_index",
        "_type" : "_doc",
        "_id" : "_id",
        "_source" : {
          "message" : "2020-07-29 03:59:19,393 -0700 INFO [http-nio-8080-exec-2139] abchohfowhofnfnnfnwlnflw CLIENT_ID=MNOPQR xysbxs",
          "client_value" : "MNOPQR"
        },
        "_ingest" : {
          "timestamp" : "2020-07-29T18:25:29.07763Z"
        }     
      }
    }
  ]
}

enter code here