我正在尝试使用此dsl查询从elasticsearch获取唯一值
{
"aggs": {
"distinct": {
"terms": {
"field": "model",
"size": 0
}
}
}
}
问题在于,如果我有两个模型,即moto g
和htc one
,我会得到四个结果,moto
,g
,htc
, one
。如何配置它以返回两个结果?
答案 0 :(得分:2)
您需要修改model
字段的映射以添加not_analyzed
子字段,而是在该子字段上运行聚合,如下所示:
curl -XPUT localhost:9200/your_index/_mapping/your_type -d '{
"properties": {
"model": {
"type": "string",
"fields": { <-- add this section
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}'
更新映射后,您需要重新编制数据索引,然后您就可以像这样运行聚合:
{
"aggs": {
"distinct": {
"terms": {
"field": "model.raw", <--- use the new sub-field
"size": 0
}
}
}
}