Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elasticsearch API返回的文档数相同_Api_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Elk - Fatal编程技术网 elasticsearch,elk,Api,elasticsearch,Elk" /> elasticsearch,elk,Api,elasticsearch,Elk" />

Elasticsearch API返回的文档数相同

Elasticsearch API返回的文档数相同,api,elasticsearch,elk,Api,elasticsearch,Elk,你好 Elasticsearch API存在问题。我编写了一个脚本,在其中执行几个不同的请求。在这些查询中,我试图计算过去半小时内来自不同主机的文档数 在所有请求中,我都使用“GET/log/\u count” 以及另一项核查请求: "query": { "bool": { "filter": { "range": {

你好

Elasticsearch API存在问题。我编写了一个脚本,在其中执行几个不同的请求。在这些查询中,我试图计算过去半小时内来自不同主机的文档数

在所有请求中,我都使用“GET/log/\u count”

以及另一项核查请求:

"query": {
        "bool": {
                "filter": {
                        "range": {
                                "@timestamp": {
                                        "gte": "now-30m",
                                        "lte": "now"
                                }
                        }
                }
        }
}
但是当我运行脚本时,得到的文档数量大致相同。即使在最后一个请求中(应该显示所有文档的总和),也会显示相同的金额,尽管它只配置了“范围”

XXX:15691

YYY:15689

ZZZ:15689

全部:15689

这是正常的行为,还是我做错了什么

UPD


这可能是意料之中的行为

原因是您现在有两个查询可以在
上运行
。您可能会在时间1时执行query1,在时间2时执行query2<代码>现在对于时间1和时间2都是不同的

同时(time2-time1),可能会添加一些文档。因此,你看到了细微的差别

要计算所有主机的数量

GET logs/_search
{
  "size": 0,
  "aggs": {
    "hosts": {
      "filters": {
        "filters": {
          "xxx": {
            "match": {
              "host": "xxx"
            }
          },
          "yyy": {
            "match": {
              "host": "yyy"
            }
          }
        }
      },
      "aggs": {
        "range": {
          "date_range": {
            "field": "@timestamp",
            "ranges": [
              {
                "to": "now-30m"
              },
              {
                "from": "now"
              }
            ]
          }
        }
      }
    }
  }
}

如果您的值不止一个单词,那么您需要使用
匹配短语
而不是
匹配

,这可能是一种预期行为

原因是您现在有两个查询可以在
上运行
。您可能会在时间1时执行query1,在时间2时执行query2<代码>现在对于时间1和时间2都是不同的

同时(time2-time1),可能会添加一些文档。因此,你看到了细微的差别

要计算所有主机的数量

GET logs/_search
{
  "size": 0,
  "aggs": {
    "hosts": {
      "filters": {
        "filters": {
          "xxx": {
            "match": {
              "host": "xxx"
            }
          },
          "yyy": {
            "match": {
              "host": "yyy"
            }
          }
        }
      },
      "aggs": {
        "range": {
          "date_range": {
            "field": "@timestamp",
            "ranges": [
              {
                "to": "now-30m"
              },
              {
                "from": "now"
              }
            ]
          }
        }
      }
    }
  }
}

如果您的值不止一个单词,则需要使用
匹配短语
而不是
匹配

,但每个请求中的搜索参数不同。文档的数量不应该随时间间隔而变化吗?这些文档从不同的主机发送到ELK堆栈,但我只计算每个主机的文档数。此外,“must”在那里用作逻辑“AND”,因此我应该只从主机“xxx”获取过去半小时内的文档数,但这不会发生。我得到了文件的总数。主机xxx可以几乎实时发送文件。不是吗?这也是正确的。您有不同的查询参数。这也可能导致差异。文档是实时发送的。如果我执行一个包含所有四个请求的脚本,我得到的文档数量会增加或减少。也就是说,任何这些查询都返回所有文档的总数。也就是说,如果我现在执行脚本,那么我将从所有请求中获得大约15000-16000个文档,但从理论上讲,我应该从前三个请求中获得更少的文档。如果您添加了返回值,那么​​在前三个查询中,您应该得到第四个查询返回的结果。有没有办法得到我想要的?或者它已经是Elasticsearch的功能了?@vovagib检查我的编辑,它会给你最后30分钟的主机计数。祝你好运!谢谢你的帮助。我使用了您的请求,但我仍然得到所有主机的相同数量的文档<代码>xxx=2585、yyy=2585和zzz=2585。这是过去半小时内所有文档的总数。我需要获得过去半小时内来自单个主机的文档数,但每个请求中的搜索参数都不同。文档的数量不应该随时间间隔而变化吗?这些文档从不同的主机发送到ELK堆栈,但我只计算每个主机的文档数。此外,“must”在那里用作逻辑“AND”,因此我应该只从主机“xxx”获取过去半小时内的文档数,但这不会发生。我得到了文件的总数。主机xxx可以几乎实时发送文件。不是吗?这也是正确的。您有不同的查询参数。这也可能导致差异。文档是实时发送的。如果我执行一个包含所有四个请求的脚本,我得到的文档数量会增加或减少。也就是说,任何这些查询都返回所有文档的总数。也就是说,如果我现在执行脚本,那么我将从所有请求中获得大约15000-16000个文档,但从理论上讲,我应该从前三个请求中获得更少的文档。如果您添加了返回值,那么​​在前三个查询中,您应该得到第四个查询返回的结果。有没有办法得到我想要的?或者它已经是Elasticsearch的功能了?@vovagib检查我的编辑,它会给你最后30分钟的主机计数。祝你好运!谢谢你的帮助。我使用了您的请求,但我仍然得到所有主机的相同数量的文档<代码>xxx=2585、yyy=2585和zzz=2585。这是过去半小时内所有文档的总数。我需要在过去半小时内从单个主机获取文档数
GET logs/_search
{
  "size": 0,
  "aggs": {
    "hosts": {
      "filters": {
        "filters": {
          "xxx": {
            "match": {
              "host": "xxx"
            }
          },
          "yyy": {
            "match": {
              "host": "yyy"
            }
          }
        }
      },
      "aggs": {
        "range": {
          "date_range": {
            "field": "@timestamp",
            "ranges": [
              {
                "to": "now-30m"
              },
              {
                "from": "now"
              }
            ]
          }
        }
      }
    }
  }
}