2017-03-17 101 views
1

理想情况下,我需要计算在城市名称中使用“伦敦”的次数。但查询返回“伦敦”,“伦敦”和“LoNdOn”等不同的值。 我已经尝试使用不区分大小写作为选项,但它不会给我所需的结果。德鲁伊查询不返回大小写聚合不敏感结果

这里是我的查询,

{ 
"queryType": "topN", 
"dataSource": "wikiticker", 
"dimension":"cityName", 
"granularity": "ALL", 
"metric": "count", 
"threshold": 10, 
"filter": 
     { 
      "type": "search", 
      "dimension": "cityName", 
      "query": { 
       "type": "insensitive_contains", 
       "value": "london",     
       } 
      }, 
"aggregations": [ 
     { 
      "type": "longSum", 
       "name": "count", 
      "fieldName": "count" 
     } 
     ], 
"intervals": ["2014-10-01T00:00:00.000Z/2016-10-07T00:00:00.000Z"] 
} 

这是我的结果:

 [ { 
    "timestamp" : "2015-09-12T00:46:58.771Z", 
     "result" : [ { 
     "count" : 21, 
     "cityName" : "London" 
     }, 
     { 
      "count" : 10, 
      "cityName" : "New London" 
     }, 
     { 
      "count" : 3, 
      "cityName" : "london" 
     }, 
     { 
      "count" : 1, 
      "cityName" : "LoNdon" 
     }, 
     { 
      "count" : 1, 
      "cityName" : "LondOn" 
     } ] 
     } ] 

我应该得到的东西,如:

 [ { 
      "timestamp" : "2015-09-12T00:46:58.771Z", 
      "result" : [ { 
      "count" : 26, 
      "cityName" : "London" 
      }, 
      { 
      "count" : 10, 
      "cityName" : "New London" 
      } ] 
     } ] 
+0

所以现在insensitive_contains越来越我,我需要不论搜索关键词中提供的情况下的值,但是我现在有将所有具有相似词语但不同情况的值统计在一起,而不是单独计算 – Anonymous

回答

0

使用过滤聚合:

已过滤的聚合器将包装任何给定的聚合器,但只聚合给定维度过滤器所匹配的值。

{ 
    "type" : "filtered", 
    "filter" : { 
      "type" : "search", 
      "dimension" : cityName, 
      "query": { 
         "type":"contains", 
         "value":"london" 
         }   
      }, 
    "aggregator" : { 
       "type": "count", 
       "name": "Total Count of the Name London" 
       } 
} 

参考

+0

nope,此解决方案不起作用。不管怎么说,还是要谢谢你。 – Anonymous