Elasticsearch 动态映射——自动检测
ES中有一个非常重要的特性——动态映射,即索引文档前不需要创建索引、类型等信息,在索引的同时会自动完成索引、类型、映射的创建。
字段自动检测
在某个字段第一次出现时,如果之前没有定义过映射,ES会自动检测它可能满足的类型,然后创建对应的映射。
JSON数据 |
ES中的数据类型 |
|
不会添加字段 |
|
boolean |
floating point number |
double |
integer |
long |
object |
object |
array |
依赖于第一个非null得值 |
string |
如果通过了date检测,则为date 如果通过了numeric检测,则为Number |
上面就是类型自动检测的结果,除了上面列出的基本类型,其他的高级的类型比如geo,ip就需要手动指定了。
日期自动检测
日期自动检测,即date_detection是默认开启的,因此只要符合默认的日期格式,就可以自动创建成date类型
日期的格式为:
[ "strict_date_optional_time","yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z"]
例如:
$ curl -XPUT localhost:9200/test/test/1 -d '{"create":"2015/11/11"}' {"_index":"test","_type":"test","_id":"1","_version":1,"created":true} $ curl -XGET localhost:9200/test/_mapping?pretty { "test" : { "mappings" : { "test" : { "properties" : { "create" : { "type" : "date", "format" : "yyyy/MM/dd HH:mm:ss||yyyy/MM/dd" } } } } } }
可以通过修改dynamic_date_formats
修改日期格式:
PUT my_index { "mappings":{ “my_type":{"dynamic_date_formats":["MM/dd/yyyy"]} } } PUT my_index/my_type/1{"create_date":"09/25/2015"}
数字自动检测
数字自动检测,即numeric_detection默认是关闭的。因此需要手动打开:
PUT my_index {"mappings":{"my_type":{"numeric_detection":true}}}
当执行索引操作时,如果符合float型,就会自动创建为float
long型也是一样:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)