将SQL查询转换为弹性搜索查询

时间:2017-03-22 18:22:46

标签: elasticsearch aggregate

任何人都能告诉我将此SQL查询映射到弹性搜索查询的最简单方法:

SELECT COUNT(*)
FROM dbo.ProductSearches AS PS
WHERE PS.ProductId = 'SOME_PRODUCT_ID'
AND PS.SearchDate >= 'CURRENT_DATE (NOW)'
AND PS.SearchDate < 'PASTE_DATE (Ex: 2014-01-02)' 

谢谢。

1 个答案:

答案 0 :(得分:0)

我假设您确实想要在[2014-01-02 TO now]范围内进行查询 - 因为您的初始SQL正在这样做,反之亦然。

然而它应该看起来像:

curl -XGET http://localhost:9200/ProductSearches/_search -d '
{
  "query": {
    "bool": {
      "must": [
        { "match": { "ProductId": "${productId}" }},
        { "range" : {
            "SearchDate" : {
              "gte": "${pasteDate}",
              "lte": "now"
            }
        }}
      ]
    }
  }
}'

生成的JSON将包含hits.total字段,该字段在语义上等于count(*)