2016-03-04 55 views
0

查询后,我用elasticsearch这样的:怎样不同的价值elasticsearch

{ 
    "query": { 
    "match_phrase": { 
     "title": "my title" 
    } 
    }, 
    "aggs": { 
    "unique_title": { 
     "cardinality": { 
     "field": "title" 
     } 
    } 
    } 
} 

我只是想为sql

select distinct title from table where title like '%my title%' 

结果给我多相同的结果,“基数”不要工作白衣“查询”

如果你不理解我,请原谅我的英语不好^ _^

回答

0

你可以用下面的查询来获得预期的结果:

GET my_index/my_type/_search 
{ 
"from": 0, 
"size": 200, 
"query": { 
    "filtered": { 
     "filter": { 
      "bool": { 
       "must": { 
        "query": { 
         "wildcard": { 
          "title": "*my title*" 
         } 
        } 
       } 
      } 
     } 
    } 
}, 
"_source": { 
    "includes": [ 
     "title" 
    ], 
    "excludes": [] 
} 
} 
+0

感谢您的回答 但结果仍然具有相同的价值 –

1

Cardinality aggregation计算不同的值的计数的字段。

因此,对于你写会是什么样子的elasticsearch查询相当于SQL查询:

select count(distinct title) from table where title like '%my title%' 

你需要使用什么是Terms aggregation用于获取不同的标题。

{ 
    "query": { 
    "match_phrase": { 
     "title": "my title" 
    } 
    }, 
    "aggs": { 
    "unique_title": { 
     "terms": { 
     "field": "title" 
     } 
    } 
    } 
} 

而且你需要寻找到搜索响应,以获得“桶”数组中的不同值的“聚集”部分。