Запрос фильтра PostgreSQL к запросу Elasticsearch - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть такой запрос в PG, он очень прост для фильтрации множества типов данных.У меня есть такой запрос в PG, он очень прост для фильтрации многих диапазонов типов данных.

select id,
sum(1) filter (where (col1+col2+col3) > 0 and (col1+col2+col3) < 10)  as 'type_1'
from tbl
where date >= '2018-11-01'
group by id

Я застрял при использованииластиком для замены этого запроса.Как я могу решить это с помощью этого запроса?

{  
   "size":0,
   "query":{            
   },
   "aggs":{  
      "current_data":{               
         "aggs":{  
            "id":{  
               "terms":{  
                  "field":"id",
                  "size":15
               },
               "aggs":{  
                    "type_1":{  
                       "filter" : { 
                            "bool":{ 
                                "must" : [
                                     {
                                        "range":{  
                                            "col1" + "col2" + "col3":{  // are there any equivalent to do like this?
                                               "gt":0
                                            }
                                         }
                                     }
                                ]
                            }
                       }
                    }
                 }
            }
         }
      }
   }

1 Ответ

0 голосов
/ 22 ноября 2018

Вы можете сделать это с помощью фильтра сценариев следующим образом:

{
  "size": 0,
  "aggs": {
    "current_data": {
      "terms": {
        "field": "id",
        "size": 15
      },
      "aggs": {
        "type_1": {
          "filter": {
            "script": {
              "script": {
                "source": "def sum = doc.col1.value + doc.col2.value + doc.col3.value; return sum > 0 && sum < 10"
              }
            }
          }
        }
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...