kinana 查询数据

term查询是代表完全匹配,即不进行分词器分析,文档中必须包含整个搜索的词汇。 term查询返回在提供的字段中包含确切term的文档。可以使用term查询根据精确的值(例如价格,产品ID或用户名)查找文档。

match也能模糊匹配,并且不区分字段值的大小写。match模糊匹配,先对输入进行分词,对分词后的结果进行查询,文档只要包含match查询条件的一部分就会被返回。match是用于执行全文查询的标准查询,包括模糊匹配和短语或接近查询。

 

和match查询类似,match_phrase查询首先解析查询字符串来产生一个词条列表。然后会搜索所有的词条,但只保留包含了所有搜索词条的文档,并且词条的位置要邻接。match_phrase 不区分大小写。 match_phrase用于匹配完全匹配的词组或单词接近匹配

对于匹配了短语"quick brown fox"的文档,下面的条件必须为true:

  • quick、brown和fox必须全部出现在某个字段中。
  • brown的位置必须比quick的位置大1。
  • fox的位置必须比quick的位置大2。

注意:如果在查询字符串的中间有通配符* (开头有*无所谓),就应该用wildcard查询,不用match_phrase查询。例如:

wildcard查询不会对查询字符串分词,也不会将查询字符串变成小写(所以要手动将查询字符串变成小写),file_name.keyword数据类型也不会被分词,最后能够匹配想要的结果。

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "event_id": "11"
          }
        },
        {
          "match": {
            "process_name": "powershell.exe"
          }
        },
        {
          "wildcard": {
            "file_name.keyword": "*\\__psscriptpolicytest_*.ps1"
          }
        }
      ]
    }
  }
}

 

 

multi_match查询以match查询为基础,以允许多字段查询:

 

如下所示,在ES中New-Object System.Xml.XmlDocument存储的是小写形式,但是match语句写成大写,依然可以查询到相应的数据。

GET logs-endpoint-winevent-*-2019.12.27/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "process_parent_name": "cmd.exe"
          }
        },
        {
          "match": {
            "process_name": "powershell.exe"
          }
        },
        {
          "match": {
            "process_command_line": "*New-Object System.Xml.XmlDocument*"
          }
        }
      ]
    }
  }
}

wildcard 查询时要在字段名后面加上keyword,而且区分字段值的大小写。如下所示:

GET logs-endpoint-winevent-*-2019.12.27/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "process_parent_name": "cmd.exe"
          }
        },
        {
          "match": {
            "process_name": "powershell.exe"
          }
        },
        {
          "wildcard": {
            "process_command_line.keyword": "*new-object system.xml.xmldocument*"
          }
        }
      ]
    }
  }
}

 

3、查询多级结构时,使用点号隔开,例如:

 

GET logs-endpoint-winevent-sysmon-2019.07.29/_search
{
  "query": {
    "term": {
      "winlog.process.thread.id": {
        "value": 2444
      }
    }
  }
}

要从_source下一级字段开始,winlog就是在_source下一级字段。

4、增加查询返回的结果条数,from/size,例如:

GET logs-endpoint-winevent-sysmon-2019.11.05/_search
{
  "from" : 0, "size" : 40,
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "process_name": "net.exe"
          }
        },
        {
          "match": {
            "process_command_line": "net use"
          }
        }
      ]
    }
  }
}
 "from" : 0, "size" : 40, 将返回从0到最大40条记录

参考:from/Size

5、aggregation

Elasticsearch聚合使您能够获取有关搜索结果的元信息,并回答诸如“德克萨斯州有多少个帐户持有人”之类的问题。 或“田纳西州的平均帐户余额是多少?” 您可以在一个请求中搜索文档,过滤返回的结果并使用汇总分析结果。

  "aggs": {
    "process_command_line_count": {
      "terms": {
        "field": "process_command_line.keyword",
          "order": {
          "_count": "desc"
        },
        "min_doc_count": 4
      }
    }
  }

该聚合是对process_command_line字段进行聚合,返回process_command_line字段的值出现的次数大于等于4的情况。 

6、

①在kibana 的discovery页面查询数据, 首先确定查询时间范围,开始时间和结束时间都可以精确到s。

注意:这里的时间比json数据中的时间要晚8个小时。要在json数据的时间向后推迟8个小时。

② 再编写查询语句,还可以使用Add filter 缩小 查询范围。

③ 下面这些记录是按照时间先后从下往上排。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值