Elasticsearch - 错误的字段类型
Elasticsearch - Wrong field type
我 运行 使用 ElasticSearch 6.8。
我试图将关键字类型字段添加到我的索引映射中。
我想要的是 my_field 看起来像这样的映射:
"my_field": {
"type": "keyword"
}
因此,为了做到这一点,我在映射中添加了一个字段:
"properties": {
...
"my_field": {
"type": "keyword",
"norms": false
},
...
}
但目前,它给了我类似的东西:
"my_field": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
我需要这个关键字类型,因为我需要在它上面进行聚合,对于文本类型,它给了我:
Fielddata is disabled on text fields by default. Set fielddata=true on [my_field] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead.
但我无法将 fielddata 设置为 true。
我尝试了很多方法,例如创建新索引而不是更新索引,但 none 这些尝试都奏效了。
有人知道如何获得正确的字段类型吗? (我更喜欢的解决方案)
或者映射中的fielddata如何设置为true?
此致,
朱尔斯
我刚刚在 Elasticsearch 6.X 版本上使用以下 curl 命令在 text
字段上将 field-data
设置为 true:
curl -X POST "localhost:9200/my_index/type?pretty" -H 'Content-Type: application/json' -d'
> {
> "mappings" :{
> "properties": {
> "my_field": {
> "type": "text",
> "fielddata": true
> }
> }
> }
> }'
并且它创建了具有适当映射的索引。
{
"_index" : "my_index",
"_type" : "type",
"_id" : "3Jl0F3EBg44VI1hJVGnz",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
映射 API 给出以下 JSON 响应。
{
"my_index": {
"mappings": {
"type": {
"properties": {
"mappings": {
"properties": {
"properties": {
"properties": {
"my_field": {
"properties": {
"fielddata": {
"type": "boolean"
},
"type": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}
}
}
}
}
}
}
我 运行 使用 ElasticSearch 6.8。
我试图将关键字类型字段添加到我的索引映射中。 我想要的是 my_field 看起来像这样的映射:
"my_field": {
"type": "keyword"
}
因此,为了做到这一点,我在映射中添加了一个字段:
"properties": {
...
"my_field": {
"type": "keyword",
"norms": false
},
...
}
但目前,它给了我类似的东西:
"my_field": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
我需要这个关键字类型,因为我需要在它上面进行聚合,对于文本类型,它给了我:
Fielddata is disabled on text fields by default. Set fielddata=true on [my_field] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead.
但我无法将 fielddata 设置为 true。
我尝试了很多方法,例如创建新索引而不是更新索引,但 none 这些尝试都奏效了。
有人知道如何获得正确的字段类型吗? (我更喜欢的解决方案)
或者映射中的fielddata如何设置为true?
此致, 朱尔斯
我刚刚在 Elasticsearch 6.X 版本上使用以下 curl 命令在 text
字段上将 field-data
设置为 true:
curl -X POST "localhost:9200/my_index/type?pretty" -H 'Content-Type: application/json' -d'
> {
> "mappings" :{
> "properties": {
> "my_field": {
> "type": "text",
> "fielddata": true
> }
> }
> }
> }'
并且它创建了具有适当映射的索引。
{
"_index" : "my_index",
"_type" : "type",
"_id" : "3Jl0F3EBg44VI1hJVGnz",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
映射 API 给出以下 JSON 响应。
{
"my_index": {
"mappings": {
"type": {
"properties": {
"mappings": {
"properties": {
"properties": {
"properties": {
"my_field": {
"properties": {
"fielddata": {
"type": "boolean"
},
"type": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}
}
}
}
}
}
}