【问题标题】:ElasticSearch REST API Aggregating Text FieldElasticSearch REST API 聚合文本字段
【发布时间】:2021-08-11 18:43:45
【问题描述】:

所以我是 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 语法的文档?

【问题讨论】:

  • 你能分享一下你的索引映射吗?
  • @ESCoder 我不确定索引映射——我正在使用由其他人创建的搜索。索引模式为 c0001_log-*

标签: elasticsearch curl kibana


【解决方案1】:

根据您收到的错误,timestamp 字段似乎属于 text 类型。您不能对 text 类型的字段执行聚合。 由于您使用的是date_histogram 聚合,因此您应该使用timestamp 字段为date 类型。

如下所示修改你的索引映射

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

【讨论】:

  • @Phil Clelland 请仔细阅读答案,如果这解决了您的问题,请告诉我?
  • 抱歉@ESCoder 我遇到了解析错误。真的不确定在哪里定义查询中的映射;我在这里盲目编码,没有任何语法指南。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-12
  • 2020-02-18
  • 2020-11-14
  • 1970-01-01
  • 2016-11-23
  • 2015-07-30
  • 2014-08-24
相关资源
最近更新 更多