如何修复ElasticSearch关键字字段的“默认情况下,文本字段的字段数据处于禁用状态”

时间:2019-12-12 05:25:56

标签: elasticsearch aws-elasticsearch

我在关键字字段上收到“默认情况下,文本字段上的字段数据已禁用”。下面是代码。

{
 "aggs": {
   "agg_terms_user": {
     "terms": {
       "field": "user"
     }
   }
 }
}

用户字段的映射如下

user: { type: "keyword" }

由于用户字段的类型设置为关键字,因此我不会收到该错误。但是,该错误仍然会引发。

  

[illegal_argument_exception]默认情况下,在文本字段上禁用字段数据。在[user]上设置fielddata = true,以通过反转取反的索引将字段数据加载到内存中。请注意,这可能会占用大量内存。或者,也可以使用关键字字段。

我不知道现在该怎么做。

3 个答案:

答案 0 :(得分:2)

@Andrey Borisko对他的评论是正确的。 我使用了基于Nikhil示例的“ user.keyword”,它对我有用。

答案 1 :(得分:0)

我发现了意外错误的原因。 ES没有正确重新索引。一旦我先删除了索引,然后重新创建它,它就开始像超级按钮一样工作。

答案 2 :(得分:0)

查看弹性中的文档,其中明确提到我们不能将文本字段用于聚合、排序或脚本

https://www.elastic.co/guide/en/elasticsearch/reference/current/text.html#fielddata-mapping-param

这可以在关键字使用的帮助下实现。尝试搜索

"field" : "user.keyword"