Elasticsearch фильтр после агрегации - PullRequest
0 голосов
/ 13 декабря 2018

Я хочу преобразовать SQL-запрос в ES-запрос.

Это мой SQL-запрос

SELECT * FROM 
(SELECT order_number, MIN(log_datetime) as log_datetime 
FROM t_log 
WHERE mall_id='amazon' AND action_name='order_register' AND log_level='3' 
GROUP BY order_number) as temp
WHERE log_datetime BETWEEN '2018-11-16 00:00:00' AND '2018-11-16 23:59:59';

и мой ES-запрос

{
  "size": 0,
  "query": {
    "constant_score": {
      "filter": {
        "bool": {
          "must": [
            {
              "term": {
                "mall_id": "devsdkwms1001"
              }
            },
            {
              "term": {
                "action_name": "order_register"
              }
            },
            {
              "term": {
                "log_level": 3
              }
            }
          ]
        }
      }
    }
  },
  "aggs": {
    "temp": {
      "range": {
        "field": "log_datetime",
        "ranges": [
          {
            "from": "2018-11-16 00:00:00",
            "to": "2018-11-16 23:59:59"
          }
        ]
      },
      "aggs": {
        "result": {
          "terms": {
            "field": "order_number",
            "size": 0
          }
        }
      }
    }
  }
}

Мой ES-запрос ..это не работает должным образом.Я не могу найти способ отфильтровать совокупные результаты в Elastic Search.Только может агрегировать после фильтра.Там в любом случае?Спасибо

1 Ответ

0 голосов
/ 13 декабря 2018

Если вы хотите, чтобы результаты агг фильтра были заглядывать в селектор буфера: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline-bucket-selector-aggregation.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...