身安不如心安,屋宽不如心宽 。

关于聚合(aggs)的问题

Elasticsearch | 作者 anythink | 发布于2014年12月14日 | 阅读数:8661

元数据是类似这样的
{{{
$data = [
'id' => '10',
'title' => '口袋妖怪中那些不可思议的科学',
'tag' => [
'吐槽','神分析','口袋妖怪','神改图','进击的巨人'
]

];
}}}

使用aggs聚合出来的结果是这样的
{{{

请求:

$query =array(
'aggs' => array(
'all_interests' => array(
'terms' => array('field'=>'tag')
)
)

);

返回:
[aggregations] => Array
(
[all_interests] => Array
(
[doc_count_error_upper_bound] => 39
[sum_other_doc_count] => 3341
[buckets] => Array
(
[0] => Array
(
[key] => 恶
[doc_count] => 613
)

[1] => Array
(
[key] => 搞
[doc_count] => 613
)

[2] => Array
(
[key] => 神
[doc_count] => 498
)

[3] => Array
(
[key] => 漫
[doc_count] => 282
)

[4] => Array
(
[key] => 剧
[doc_count] => 239
)
}}}



单独搜索 tag 的内容是没有问题的, 但是聚合后却变成一个字一个字的,而不是一个完整的数据。

请问是需要做配置还是说要装分词插件?
已邀请:

anythink - 80后IT男

赞同来自: Rubricate

通过默认修改系统默认分词器
index.analysis.analyzer.default.type: keyword

可以解决这个问题。

Rubricate - hi

赞同来自:

你用了标准分词?然后一个个给你分词了
参考这个
http://www.elasticsearch.org/g ... .html

curl -XPUT 'localhost:9200/test' -d '
{
"settings" : {
"analysis" : {
"analyzer" : {
"my_ngram_analyzer" : {
"tokenizer" : "my_ngram_tokenizer"
}
},
"tokenizer" : {
"my_ngram_tokenizer" : {
"type" : "nGram",
"min_gram" : "2",
"max_gram" : "3",
"token_chars": [ "letter", "digit" ]
}
}
}
}
}'

curl 'localhost:9200/test/_analyze?pretty=1&analyzer=my_ngram_analyzer' -d 'FC Schalke 04'
# FC, Sc, Sch, ch, cha, ha, hal, al, alk, lk, lke, ke, 04

anythink - 80后IT男

赞同来自:

这个 nGram 是干嘛用的,有人对 分词器这块翻译过文档吗。。。

要回复问题请先登录注册