SQL查询的弹性搜索替代方案?

时间:2014-05-23 06:47:53

标签: sql elasticsearch

如何编写以下SQL查询的Elastic Search Alternative

select
    column1,
    column2,
    column3,
    count(column3)
from
    table_name
where
    some conditions
group by
    column1,
    column2,
    column3
order by
    column 3 desc;

我通过方面,总和聚合等尝试了很多方法。无法组合查询。 我认为可以使用脚本完成相同的操作,但我不知道该怎么做?

  1. 您能否指导我如何编写上述SQL替代方案?
  2. 是否可以通过脚本,如果是这样的话?
  3. 提前致谢。

1 个答案:

答案 0 :(得分:0)

我终于找到了一种方法,但只能按列分组。这是查询

{
  "index": "index_value",
  "type": "type_value",
  "searchQuery": {
    "query": {
      "match_all": {}
    },
    "filter": {
      "range": {
        "activity_date": {
          "from": "2013-11-01",
          "to": "2014-11-02"
        }
      }
    },
    "facets": {
      "sample_facet": {
        "terms_stats": {
          "key_field": "offering_sku",
          "value_field": "net_ordered_units",
          "value_field": "gross_ordered_units",
          "order": "max"
        }
      }
    }
  }
}

指定过滤器中的where条件,facet是弹性搜索的替代,其中key_field表示列名称,value_field表示执行聚合的字段,如sum,max等。最大订单是指基于降序的最大值进行排序。