Fielddata is disabled on text fields by default. Set fielddata=true on [gender] in order to load fie
Posted 穷开心y
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fielddata is disabled on text fields by default. Set fielddata=true on [gender] in order to load fie相关的知识,希望对你有一定的参考价值。
ES进行如下聚合操作时,会报如题所示错误:
1 ? Downloads curl -XPOST ‘localhost:9200/bank/_search?pretty‘ -d ‘
2 {
3 "size": 0,
4 "aggs": {
5 "group_by_state": {
6 "terms": {
7 "field": "state"
8 }
9 }
10 }
11 }‘
提示报错如下:
1 {
2 "error" : {
3 "root_cause" : [
4 {
5 "type" : "illegal_argument_exception",
6 "reason" : "Fielddata is disabled on text fields by default. Set fielddata=true on [state] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory."
7 }
8 ],
9 "type" : "search_phase_execution_exception",
10 "reason" : "all shards failed",
11 "phase" : "query",
12 "grouped" : true,
13 "failed_shards" : [
14 {
15 "shard" : 0,
16 "index" : "bank",
17 "node" : "nkL8C69pTMuXrZBXicjshw",
18 "reason" : {
19 "type" : "illegal_argument_exception",
20 "reason" : "Fielddata is disabled on text fields by default. Set fielddata=true on [state] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory."
21 }
22 }
23 ],
24 "caused_by" : {
25 "type" : "illegal_argument_exception",
26 "reason" : "Fielddata is disabled on text fields by default. Set fielddata=true on [state] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory."
27 }
28 },
29 "status" : 400
30 }
根据官方文档显示,出现该错误是因为5.x之后,Elasticsearch对排序、聚合所依据的字段用单独的数据结构(fielddata)缓存到内存里了,但是在text字段上默认是禁用的,如果有需要单独开启,这样做的目的是为了节省内存空间。——官方文档地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/fielddata.html
开启方法:
1 ? Downloads curl -XPUT ‘http://localhost:9200/bank/_mapping/account‘ -d ‘
2 {
3 "properties": {
4 "state": {
5 "type": "text",
6 "fielddata": true
7 }
8 }
9 }‘
# bank是index、account是类型、state是你需要设置的text字段
出现如下提示,说明设置成功:
1 {"acknowledged":true}
至此,聚合问题解决:
1 ? Downloads curl -XPOST ‘localhost:9200/bank/_search?pretty‘ -d ‘
2 {
3 "size": 0,
4 "aggs": {
5 "group_by_state": {
6 "terms": {
7 "field": "state"
8 }
9 }
10 }
11 }‘
12 {
13 "took" : 60,
14 "timed_out" : false,
15 "_shards" : {
16 "total" : 5,
17 "successful" : 5,
18 "failed" : 0
19 },
20 "hits" : {
21 "total" : 1000,
22 "max_score" : 0.0,
23 "hits" : [ ]
24 },
25 "aggregations" : {
26 "group_by_state" : {
27 "doc_count_error_upper_bound" : 20,
28 "sum_other_doc_count" : 770,
29 "buckets" : [
30 {
31 "key" : "id",
32 "doc_count" : 27
33 },
34 {
35 "key" : "tx",
36 "doc_count" : 27
37 },
38 {
39 "key" : "al",
40 "doc_count" : 25
41 },
42 {
43 "key" : "md",
44 "doc_count" : 25
45 },
46 {
47 "key" : "tn",
48 "doc_count" : 23
49 },
50 {
51 "key" : "ma",
52 "doc_count" : 21
53 },
54 {
55 "key" : "nc",
56 "doc_count" : 21
57 },
58 {
59 "key" : "nd",
60 "doc_count" : 21
61 },
62 {
63 "key" : "me",
64 "doc_count" : 20
65 },
66 {
67 "key" : "mo",
68 "doc_count" : 20
69 }
70 ]
71 }
72 }
73 }
以上是关于Fielddata is disabled on text fields by default. Set fielddata=true on [gender] in order to load fie的主要内容,如果未能解决你的问题,请参考以下文章
ES关键字排序报错 reason=Fielddata is disabled on text fields by default. Set fielddata=true on 关键字 in order
Fielddata is disabled on text fields by default. Set fielddata=true on [gender] in order to load fie
ElasticsearchFielddata is disabled on text field fielddata=true
ES关键字排序报错 reason=Fielddata is disabled on text fields by default. Set fielddata=true on 关键字 in order
ES关键字排序报错 reason=Fielddata is disabled on text fields by default. Set fielddata=true on 关键字 in order