即使是不成熟的尝试,也胜于胎死腹中的策略。

es实现sql的group by 使用aggs出现分词问题

Elasticsearch | 作者 sfhy20 | 发布于2016年08月30日 | 阅读数:15359

想对数据进行分组统计 将数据中一定数量的类似结果进行分组统计加入原数据中 类似mysql的group by
{
"aggs": {
"agg1": {
"terms": {
"field": "mc"
}
}
}
}
mc为中文字段 以上参数结果如下
["aggregations"] => array(1) {
["agg1"] => array(3) {
["doc_count_error_upper_bound"] => int(43)
["sum_other_doc_count"] => int(5496)
["buckets"] => array(5) {
[0] => array(2) {
["key"] => string(3) "公"
["doc_count"] => int(510)
}
[1] => array(2) {
["key"] => string(3) "司"
["doc_count"] => int(510)
}
[2] => array(2) {
["key"] => string(3) "有"
["doc_count"] => int(508)
}
[3] => array(2) {
["key"] => string(3) "限"
["doc_count"] => int(508)
}
[4] => array(2) {
["key"] => string(3) "业"
["doc_count"] => int(126)
}
}
}
}
结果将mc字段分词 并对出现频率进行了统计 
是不是忘记了什么参数  可以使其不分词 本来是要对两个字段进行分组的 现在一个字段就分词了 两个字段的话执行出错  求教各位如何解决
已邀请:

martindu - 搜披露创始人

赞同来自: leighton_buaa sfhy20

分词字段不能用Terms聚合,因为Terms是针对Term单位的,分词之后每个分后的词都是一个Term,就会出现你这种情况。你把这个字段改成不分词的就可以了。

sfhy20 - phper pythoner

赞同来自:

尝试了一下 建立mappings的时候 把要聚合的字段给了一个新的字段 新字段标明
"type" => "string", "index"=>"not_analyzed"
并重新建立索引
搜索的时候 聚合使用新字段
'aggs': { "by_holder":{ 'terms':{ "field":'p_name_new' }}}

结果依旧时分词的
["aggregations"] => array(1) {
["by_holder"] => array(3) {
["doc_count_error_upper_bound"] => int(65)
["sum_other_doc_count"] => int(13409)
["buckets"] => array(10) {
[0] => array(2) {
["key"] => string(3) "装"
["doc_count"] => int(584)
}
[1] => array(2) {
["key"] => string(3) "的"
["doc_count"] => int(554)
}
[2] => array(2) {
["key"] => string(3) "置"
["doc_count"] => int(550)
}
[3] => array(2) {
["key"] => string(3) "一"
["doc_count"] => int(520)
}
[4] => array(2) {
["key"] => string(3) "种"
["doc_count"] => int(509)
}
[5] => array(2) {
["key"] => string(3) "方"
["doc_count"] => int(431)
}
[6] => array(2) {
["key"] => string(3) "及"
["doc_count"] => int(430)
}
[7] => array(2) {
["key"] => string(3) "法"
["doc_count"] => int(414)
}
[8] => array(2) {
["key"] => string(3) "电"
["doc_count"] => int(280)
}
[9] => array(2) {
["key"] => string(3) "机"
["doc_count"] => int(222)
}
}
}
}

coder

赞同来自:

楼主如何解决的呢

hailang

赞同来自:

mapping的时候 fields 设置成keywords 

hwan

赞同来自:

你好,请问用python mapping是这样的吗?整了好久了,刚学这个

TIM截图20170727010037.png

 

要回复问题请先登录注册