如何修复关键字字段的ElasticSearch‘默认在文本字段上禁用字段数据’

xhv8bpkk  于 2022-10-06  发布在  ElasticSearch
关注(0)|答案(4)|浏览(203)

我在一个关键字域上看到“默认情况下,文本域上禁用了Fielddata”。以下是代码。

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

用户字段的Map如下

user: { type: "keyword" }

由于User字段已将type设置为关键字,因此我不会收到该错误。但是,仍会抛出该错误。

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

我不知道现在该试什么。

20jt8wwn

20jt8wwn1#

@Andrey Borisko的评论是正确的

我用了

"field": "user.keyword"

而不是

"field": "user"

基于尼基尔的例子,它对我很管用。

but5z9lq

but5z9lq2#

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

xtupzzrd

xtupzzrd3#

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

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

这可以通过使用关键字来实现。尝试按以下方式进行搜索

“field”:“user.keyword”

jdgnovmf

jdgnovmf4#

面对心跳应用中同样的问题,我通过以下几个步骤解决了这个问题。

1.停止应用程序[在我的例子中,我停止了心跳应用程序]
1.删除APP相关索引。
1.启动应用程序

相关问题