我使用弹性搜索来创建搜索过滤器,我需要找到保存在" cambio"的数据库中的所有值。列,不重复值。
值保存如下:" Manual de 5 marchas"或"手册de 6 marchas" ....
我创建了此查询以返回所有已保存的值:
GET /crawler10/crawler-vehicles10/_search
{
"size": 0,
"aggregations": {
"my_agg": {
"terms": {
"field": "cambio"
}
}
}
}
但是当我运行返回的值时,它们看起来像这样:
"aggregations": {
"my_agg": {
"doc_count_error_upper_bound": 2,
"sum_other_doc_count": 2613,
"buckets": [
{
"key": "de",
"doc_count": 2755
},
{
"key": "marchas",
"doc_count": 2714
},
{
"key": "manual",
"doc_count": 2222
},
{
"key": "modo",
"doc_count": 1097
},
{
"key": "5",
"doc_count": 1071
},
{
"key": "d",
"doc_count": 1002
},
{
"key": "n",
"doc_count": 1002
},
{
"key": "automática",
"doc_count": 935
},
{
"key": "com",
"doc_count": 919
},
{
"key": "6",
"doc_count": 698
}
]
}
}
答案 0 :(得分:1)
聚合基于已保存字段的映射类型。 cambio
的字段类型似乎设置为analyzed
(默认情况下)。请为您的字段not_analyzed
创建一个包含cambio
映射的索引。
您可以使用PUT
请求创建索引(如果您的ES版本小于5),然后您需要在crawler10
索引中重新索引数据。
PUT crawler10/_mapping/
{
"mappings": {
"crawler-vehicles10": {
"properties": {
"cambio": {
"type": "string"
"index": "not_analyzed"
}
}
}
}
}
对于ES v5或更高版本
PUT crawler10/_mapping/
{
"mappings": {
"crawler-vehicles10": {
"properties": {
"cambio": {
"type": "keyword"
}
}
}
}
}