元数据是类似这样的
{{{
$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 的内容是没有问题的, 但是聚合后却变成一个字一个字的,而不是一个完整的数据。
请问是需要做配置还是说要装分词插件?
{{{
$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 的内容是没有问题的, 但是聚合后却变成一个字一个字的,而不是一个完整的数据。
请问是需要做配置还是说要装分词插件?
3 个回复
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男
赞同来自: