elasticsearch - Elasticsearch按字段前缀聚合

标签 elasticsearch

我有以下形式的数据输入

{
   "id": "ABCxxx",
   // Other fields
}

其中ABC是定义此记录的“类型”的唯一标识符。 (例如,用户为USR1234...,图像为IMG1234...)

我想获取我在ES中拥有的所有不同类型的记录的列表。因此,从本质上讲,我想按id进行排序,但仅查看id的前三个字符。

这显然不起作用,因为它按id排序(因此USR123USR456不同):
{
    "fields": ["id"],
    "aggs": {
        "group_by_id": {
            "terms": {
                "field": "id"
            }
        }
    }
}

如何编写此查询?

最佳答案

正如 paqash 所建议的那样,可以通过脚本来实现相同的目的,但是我建议您在架构中将“类型”存储为不同的字段。

例如。

USR1234 : {id:"USR1234", type:"USR"}
IMG1234 : {id:"USR1234", type:"IMG"}

这样可以避免脚本编写过程中不必要的麻烦,并使查询界面保持整洁。

关于elasticsearch - Elasticsearch按字段前缀聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42449176/

相关文章:

logging - Kibana 3 里程碑 4 和 Graphite 集成

javascript - Elasticsearch 中的搜索突出显示 (javascript)

apache-spark - Spark 结构化流与 ElasticSearch 集成

elasticsearch - 设置ELK堆栈

spring-boot - 找不到org.elasticsearch.client.Cancellable的类文件

python - 将Elastic集群数据读入python数据框

elasticsearch - ElasticSearch:将 “not_analyzed”字段设置为 “store” :“yes”的影响?

c# - 如何使用Nest将具有数组值的settings属性添加到ES-index

json - ElasticSearch未返回预期结果

curl - 如何在elasticsearch中获取单词三元组