返回

ElasticSearch指定Long型仍变Keyword,你的问题可能在于这里

后端

ElasticSearch中long型变Keyword的原因

在Elasticsearch中,long型字段默认被索引为keyword类型。这是因为long型字段通常用于存储较大的整数,而keyword类型更适合存储较小的整数。如果您想将long型字段索引为long类型,则需要在字段映射中显式指定数据类型。

如何将long型字段索引为long类型

要将long型字段索引为long类型,您需要在字段映射中指定数据类型。这可以通过两种方式来完成:

  1. 在创建索引时指定字段映射
{
  "mappings": {
    "properties": {
      "my_long_field": {
        "type": "long"
      }
    }
  }
}
  1. 在更新索引时指定字段映射
{
  "properties": {
    "my_long_field": {
      "type": "long"
    }
  }
}

确保字段映射被正确应用

一旦您指定了字段映射,您需要确保它被正确应用。您可以通过以下方法来检查字段映射是否被正确应用:

  1. 使用Elasticsearch的_mapping API来查看字段映射
curl -XGET "http://localhost:9200/_mapping/my_index"
  1. 使用Elasticsearch的_cat API来查看字段映射
curl -XGET "http://localhost:9200/_cat/mappings/my_index?v"
  1. 使用Elasticsearch的Java API来查看字段映射
MappingGetResponse mappingGetResponse = client.admin().indices().getMappings(new GetMappingsRequest()).get(myIndex);

常见问题解答

问:为什么我的long型字段仍然被索引为keyword类型,即使我已经在字段映射中指定了数据类型?

答:这可能是因为您没有正确地更新索引。确保您已经使用Elasticsearch的_update_mapping API来更新索引。

问:我可以在现有文档中更改字段类型吗?

答:不可以。您只能在创建文档时指定字段类型。

问:我可以使用Elasticsearch的动态映射功能来自动检测字段类型吗?

答:可以。但是,这可能会导致意外的行为。如果您需要确保字段类型被正确索引,则最好显式指定字段映射。