返回
ElasticSearch指定Long型仍变Keyword,你的问题可能在于这里
后端
2024-01-03 11:38:21
ElasticSearch中long型变Keyword的原因
在Elasticsearch中,long型字段默认被索引为keyword类型。这是因为long型字段通常用于存储较大的整数,而keyword类型更适合存储较小的整数。如果您想将long型字段索引为long类型,则需要在字段映射中显式指定数据类型。
如何将long型字段索引为long类型
要将long型字段索引为long类型,您需要在字段映射中指定数据类型。这可以通过两种方式来完成:
- 在创建索引时指定字段映射
{
"mappings": {
"properties": {
"my_long_field": {
"type": "long"
}
}
}
}
- 在更新索引时指定字段映射
{
"properties": {
"my_long_field": {
"type": "long"
}
}
}
确保字段映射被正确应用
一旦您指定了字段映射,您需要确保它被正确应用。您可以通过以下方法来检查字段映射是否被正确应用:
- 使用Elasticsearch的_mapping API来查看字段映射
curl -XGET "http://localhost:9200/_mapping/my_index"
- 使用Elasticsearch的_cat API来查看字段映射
curl -XGET "http://localhost:9200/_cat/mappings/my_index?v"
- 使用Elasticsearch的Java API来查看字段映射
MappingGetResponse mappingGetResponse = client.admin().indices().getMappings(new GetMappingsRequest()).get(myIndex);
常见问题解答
问:为什么我的long型字段仍然被索引为keyword类型,即使我已经在字段映射中指定了数据类型?
答:这可能是因为您没有正确地更新索引。确保您已经使用Elasticsearch的_update_mapping API来更新索引。
问:我可以在现有文档中更改字段类型吗?
答:不可以。您只能在创建文档时指定字段类型。
问:我可以使用Elasticsearch的动态映射功能来自动检测字段类型吗?
答:可以。但是,这可能会导致意外的行为。如果您需要确保字段类型被正确索引,则最好显式指定字段映射。