ElasticSearch Aggregarion - 按计数分组而不分析字段
ElasticSearch Aggregarion - Group by count without analyzing field
我们的索引中有一个字段类别,我们想使用聚合查询获取每个类别的记录数。
GET /_search
{
"aggs" : {
"genres" : {
"terms" : { "field" : "category" }
}
}
}
我们正在获取结果,但它是在分析类别后给出结果。像这样
{
"key": "chil",
"doc_count": 343503
},
{
"key": "child",
"doc_count": 343503
},
{
"key": "childr",
"doc_count": 343503
},
{
"key": "childre",
"doc_count": 343503
},
但是我想要不分析的结果,希望可以,谁能帮我查询一下。
预计
{
"key": "children",
"doc_count": 343503
},
{
"key": "Category1",
"doc_count": 43503
},
{
"key": "Category2",
"doc_count": 60000
}
我们正在为映射中的字段 categoryqu 提供自动完成分析器
"name": {
"type": "string",
"analyzer": "autocomplete",
"search_analyzer": "standard"
}
谢谢
尝试在 .keyword
上聚合。但是从它的样子来看,您还没有在映射中指定关键字字段。
所以像这样调整你的映射:
{
"category":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
},
"name":{
"analyzer":"autocomplete",
"search_analyzer":"standard",
"type":"text"
}
}
}
}
和运行以下
GET /_search
{
"aggs":{
"genres":{
"terms":{
"field":"category.keyword"
}
}
}
}
注意:在 category
上执行搜索将使用 ES-默认文本映射。使用 category.name
将使用您指定的分析器和搜索分析器。 searching/aggregating on category.keyword
将对区分大小写的关键字执行操作——这正是您所期望的。
我们的索引中有一个字段类别,我们想使用聚合查询获取每个类别的记录数。
GET /_search
{
"aggs" : {
"genres" : {
"terms" : { "field" : "category" }
}
}
}
我们正在获取结果,但它是在分析类别后给出结果。像这样
{
"key": "chil",
"doc_count": 343503
},
{
"key": "child",
"doc_count": 343503
},
{
"key": "childr",
"doc_count": 343503
},
{
"key": "childre",
"doc_count": 343503
},
但是我想要不分析的结果,希望可以,谁能帮我查询一下。
预计
{
"key": "children",
"doc_count": 343503
},
{
"key": "Category1",
"doc_count": 43503
},
{
"key": "Category2",
"doc_count": 60000
}
我们正在为映射中的字段 categoryqu 提供自动完成分析器
"name": {
"type": "string",
"analyzer": "autocomplete",
"search_analyzer": "standard"
}
谢谢
尝试在 .keyword
上聚合。但是从它的样子来看,您还没有在映射中指定关键字字段。
所以像这样调整你的映射:
{
"category":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
},
"name":{
"analyzer":"autocomplete",
"search_analyzer":"standard",
"type":"text"
}
}
}
}
和运行以下
GET /_search
{
"aggs":{
"genres":{
"terms":{
"field":"category.keyword"
}
}
}
}
注意:在 category
上执行搜索将使用 ES-默认文本映射。使用 category.name
将使用您指定的分析器和搜索分析器。 searching/aggregating on category.keyword
将对区分大小写的关键字执行操作——这正是您所期望的。