如何在Kibana中搜索对象数组?

时间:2019-04-07 23:56:14

标签: elasticsearch kibana

我们有以下格式的日志进入Kibana:

{
  "starttime": "2019-04-07T23:31:07.855Z",
  "maxlevel": "ERROR",
  "messages": [
    {
      "time": "2019-04-07T23:31:07.861Z",
      "level": "ERROR",
      "message": "[application.controllers.RestApiController] no_staff_member Please identify yourself"
    },
    {
      "time": "2019-04-07T23:31:07.862Z",
      "level": "INFO",
      "message": "[application.controllers.RestApiController] received request"
    }
  ]
}

如何在Kibana中编写查询以搜索message.message中确实包含“ no_staff_member”的任何日志条目?

我尝试过:

  1. messages.message:no_staff_member
  2. messages.message:/.*no_staff_member.*/

1 个答案:

答案 0 :(得分:0)

您需要直接在messages字段中进行查询,它将在该字段上执行全文查询,而您无法在数组中的字段内部进行查询。

来自documentation

  

对象数组无法正常运行:您不能独立于数组中的其他对象查询每个对象。如果需要执行此操作,则应使用嵌套数据类型而不是对象数据类型。

如果将字段映射为nested,或者在对Elasticsearch进行索引之前对数据进行非规范化,则可以更改它。