OR和AND函数的Elasticsearch查询

时间:2017-11-14 13:56:29

标签: elasticsearch

我是elasticsearch的新手,我正在做一些查询基础知识。

我必须检索那些文件的计数: 包含netflow.src_port ['10','11','12']或netflow.dst_port ['20','21','22'] AND时间戳在最近15分钟内。

我有一个基本查询如下:

index.jsp

通过official documentation body: { "query": { "bool":{ "should": [ {"terms": { "netflow.src_port": ["10","11","12"] }}, {"terms": { "netflow.dst_port": ["20","21","22"] }} ], "must": [ {"range" : { "@timestamp" : { "gt" : "now-15m" } }} ] } } } 用于注意:文档不需要包含该范围内的src_port或dst_port,但如果有,则相应地计算成本。

我真正需要的是他们的条件。

如果我的解释不清楚,下面可能会传达我想要实现的目标:

should

我到底需要做什么才能获得理想的结果?

1 个答案:

答案 0 :(得分:0)

尝试更改查询的should部分以包含minimum_should_match属性。 e.g。

{
  "bool":{
    "should": [
      {"terms": { "netflow.src_port": ["10","11","12"] }},
      {"terms": { "netflow.dst_port": ["20","21","22"] }}
    ],
    "must": [
      {"range" : {
        "@timestamp" : {
          "gt" : "now-15m"
        }
      }}
    ],
    "minimum_should_match": 1
  }
}