我有一个经过分析的领域,例如,让它命名为#34;座右铭"。我想全文saerch"生活"并按计数汇总它们。
...
"query":{
"term":{
"motto":"life"
}
},
"aggs": {
"match_count": {
"terms": "motto"
}
}
...
我想要的结果是:
...
{
...
"buckets": [
{
"key":"life is good",
"doc_count":3
}
]
...
}
...
结果实际上是:
{
...
"buckets": [
{
"key": "life",
"doc_count": 3
},
{
"key": "good",
"doc_count": 3
},
{
"key": "is",
"doc_count": 3
}
]
...
}
如何按照我想要的方式聚合它们?
答案 0 :(得分:4)
您可以做的是为not_analyzed
字段创建motto
子字段,如下所示:
curl -XPUT localhost:9200/your_index/your_type/_mapping -d '{
"your_type": {
"properties": {
"motto": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}'
完成后,您需要重新编制数据索引,以便填充motto.raw
子字段。
最后,您将能够运行这样的查询,即在motto
上搜索,但在motto.raw
上汇总:
...
"query":{
"term":{
"motto":"life"
}
},
"aggs": {
"match_count": {
"terms": { "field": "motto.raw" }
}
}
...