ElasticSearch REST API聚合文本字段



所以我是ElasticSearch/Kibana的新手,试图创建一个简单的Curl命令来命中Elastic的REST API并返回包含给定文本字符串的日志数量。但我得到以下错误:

文本字段没有针对需要每个文档字段数据(如聚合和排序)的操作进行优化,因此这些操作在默认情况下是禁用的。请使用关键字字段。或者,在[timestamp]上设置fielddata=true,以便通过反反转索引来加载字段数据。注意,这会占用大量内存。" 我的代码如下:
{
"size": 0,
"query": {
"range": {
"timestamp": {
"gte": "2021-06-15",
"lte": "2021-06-23"
}
}
},
"aggs": {
"hit_count_per_day": {
"date_histogram": {
"field": "timestamp",
"calendar_interval": "day"
}
}
}
}

我应该在哪里添加这个"fielddata=true"错误中提到的值?谁能指出我对ElasticSearch API语法的参考文档?

根据您得到的错误,似乎timestamp字段是text类型。不能对text类型的字段进行聚合。由于您正在使用date_histogram聚合,您应该使用timestamp字段为date类型。

修改索引映射,如下所示

{
"mappings": {
"properties": {
"timestamp": {
"type": "date"
}
}
}
}

最新更新