elasticsearch 弹性搜索嵌入式脚本优化,elasticsearch,elasticsearch" /> elasticsearch 弹性搜索嵌入式脚本优化,elasticsearch,elasticsearch" />

elasticsearch 弹性搜索嵌入式脚本优化

elasticsearch 弹性搜索嵌入式脚本优化,elasticsearch,elasticsearch,有没有办法简化和优化以下查询: { "query": { "filtered": { "filter": { "and": [ { "range": { "ts": { "gte": "2014-12-18", "lte": "2014-12-18" } }

有没有办法简化和优化以下查询:

{
  "query": {
    "filtered": {
      "filter": {
        "and": [
          {
            "range": {
              "ts": {
                "gte": "2014-12-18",
                "lte": "2014-12-18"
              }
            }
          }
        ]
      },
      "query": {
        "match": {
          "track_events.event": "render"
        }
      }
    }
  },
  "aggs": {
    "per_type": {
      "terms": {
        "field": "type",
        "order": {
          "_count": "desc"
        },
        "size": 0
      },
      "aggs": {
        "per_hour": {
          "terms": {
            "script": "(doc[\"track_events.ts\"].value - doc[\"ts\"].value)/(1000 * 3600)",
            "order": {
              "_count": "desc"
            },
            "size": 0
          }
        }
      }
    }
  }
}
elasticsearch中的索引包含带有字段
track\u events.ts
ts
的文档。目的是统计
track\u events.ts
ts
之间每小时发生的事件数。 答复示例:

                "buckets": [{
                    "key": "0",
                    "doc_count": 67736997
                },
                {
                    "key": "1",
                    "doc_count": 7193214
                },
                {
                    "key": "2",
                    "doc_count": 3406966
                },
                {
                    "key": "3",
                    "doc_count": 1988135
                }]
            }

这意味着
67736997
计算时差小于1小时的时间,
7193214
计算时差小于2小时的时间,等等。

最大的性能增益是替换脚本

i、 e.而不是做:

(doc[\"track_events.ts\"].value - doc[\"ts\"].value)/(1000 * 3600)
将数据加载到Elasticsearch并将其放入另一个字段时,预先计算此值。然后在此字段上执行术语聚合