Elasticsearch查询结果返回错误结果

时间:2018-11-16 15:05:50

标签: elasticsearch

我正在尝试查询服务器日志。搜索正在返回结果,但是有两个问题。

1)我指定的是服务器名称,但我却获得了同一域中其他服务器的结果。

2)即使我指定查询从过去一小时返回结果,但它们还是从两个小时前返回,也就是说,如果我在下午1点执行搜索,则结果将从下午12点返回。如果我指定按时间戳排序,则搜索会返回正确的结果,但这似乎要花更长的时间才能显示结果,因此,我宁愿不这样做,除非必须这样做。

非常感谢您能提供的帮助。

这是我的查询(具有已修改的日志名称和服务器名称):

var searchParams = {
index: 'logs*',
    "body": {
      "from" : 0, "size": 50,
      "sort": [
        {
          "timestamp": {
            "order": "desc",
            "unmapped_type": "boolean"
          }
        }
      ],
        "query": {
            "bool": {
                "must": [
                    {
                      "match" : {"gl2_source_input" : "579f7b6696d78a4f6cbfa745"},
                      "match" : {"source" : "server01.fakedomain.com"},
                      "match" : {"EventID" : "5145"}
                    },
                    {
                        "range": {
                            "timestamp": {
                              "gte": "now-1h",
                              "lte": "now/m",
                              "time_zone": "-05:00"
                            }
                        }
                    }
                ],
              "must_not": []
            }
        },

    }

}

1 个答案:

答案 0 :(得分:0)

这里有几件事:

  1. 如果要精确匹配关键字,请在term类型字段上使用keyword查询。

  2. 除非您对查询得分感兴趣,否则应使用filter子句而不是must子句。

因此您的查询可能看起来像这样(假设您的过滤器字段为keyword类型的字段)。

var searchParams = {
index: 'logs*',
    "body": {
      "from" : 0, "size": 50,
      "sort": [
        {
          "timestamp": {
            "order": "desc",
            "unmapped_type": "boolean"
          }
        }
      ],
        "query": {
            "bool": {
                "filter": [
                    { "term" : {"gl2_source_input" : "579f7b6696d78a4f6cbfa745"} },
                    { "term" : {"source" : "server01.fakedomain.com"} },
                    { "term" : {"EventID" : "5145"} },
                    {
                        "range": {
                            "timestamp": {
                              "gte": "now-1h",
                              "lte": "now/m",
                              "time_zone": "-05:00"
                            }
                        }
                    }
                ]
            }
        },

    }
}
相关问题