Elasticsearch:每秒的搜索操作数

时间:2014-10-13 09:03:13

标签: performance search elasticsearch

我正在寻找一种在节点(和/或所有节点)上每秒获取一次搜索操作次数的方法。

有没有办法在没有Marvel插件的情况下获取此信息? 我的ElasticSearch版本 0.90.11

2 个答案:

答案 0 :(得分:1)

Marvel通过抽样做到了。如果您编写脚本以重复运行curl http://localhost:9200/_stats/search并解析如下所示的结果:

...
  "_all" : {
    "primaries" : {
      "search" : {
        "open_contexts" : 0,
        "query_total" : 51556,
        "query_time_in_millis" : 2339958,
        "query_current" : 0,
        "fetch_total" : 8276,
        "fetch_time_in_millis" : 34916,
        "fetch_current" : 0
      }
    },
    "total" : {
      "search" : {
        "open_contexts" : 0,
        "query_total" : 73703,
        "query_time_in_millis" : 2773745,
        "query_current" : 0,
        "fetch_total" : 10428,
        "fetch_time_in_millis" : 45570,
        "fetch_current" : 0
      }
    }
  },
...

您可以看到query_total值 - 只是以某个间隔重复查询,然后进行数学计算。

答案 1 :(得分:0)

谢谢Alcanzar。 这是我创建的脚本:

if [[ $1 == "" ]]
then
        echo "Usage : $0 <refresh_interval_in second>"
        echo "Example : ./$0 10"
        exit 1
fi

refresh_interval=$1

while true; do
begin=$(curl --silent http://localhost:9200/_stats/search?pretty | grep '"query_total" :' | sed -n 2p | sed 's/,$//' | awk '{print $3}')
sleep $refresh_interval
end=$(curl --silent http://localhost:9200/_stats/search?pretty | grep '"query_total" :' | sed -n 2p | sed 's/,$//' | awk '{print $3}')
total=$(echo $(((( $end - $begin )) / $refresh_interval)))
echo $(date +"[%T] ")"Search ops/sec : "$total
done

例如,每10秒刷新一次,执行: sh script.sh 10