如何修复关键字字段的 ElasticSearch“默认情况下在文本字段上禁用字段数据”

Nik*_*hil 4 elasticsearch aws-elasticsearch

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

{
 "aggs": {
   "agg_terms_user": {
     "terms": {
       "field": "user"
     }
   }
 }
}
Run Code Online (Sandbox Code Playgroud)

用户字段的映射如下

user: { type: "keyword" }
Run Code Online (Sandbox Code Playgroud)

由于用户字段的类型设置为关键字,我不应该收到错误消息。但是,错误仍然被抛出。

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

我现在不知道该尝试什么。

Inv*_*tor 14

@Andrey Borisko评论是正确的

我用了

"field": "user.keyword" 
Run Code Online (Sandbox Code Playgroud)

代替

"field": "user" 
Run Code Online (Sandbox Code Playgroud)

基于 Nikhil 的例子,它对我有用。


Nik*_*hil 11

我找到了意外错误背后的原因。ES 没有正确重新索引。一旦我先删除了索引,然后重新创建它,它就开始像魅力一样工作。

  • 删除索引确实有帮助,您可以使用以下命令在服务器终端中执行“curl -X DELETE 'http://localhost:9200/your_index_name'”,以防万一您不知道索引的名称,您可以使用`curl -X GET 'http://localhost:9200/_search'` 您将看到索引名称。如果默认设置有任何更改,请替换您的域名和端口。 (4认同)
  • 您能提供更多关于您是如何做到这一点的细节吗?(v6.8) (2认同)