ElasticSearch源码:数据类型
发布网友
发布时间:2024-10-04 09:40
我来回答
共1个回答
热心网友
时间:2024-11-19 15:31
ElasticSearch源码版本 7.5.2,其底层基于Lucene,Lucene好比汽车的发动机,提供了基础的存储和查询功能,而ES则在此基础上增加了分布式特性。本文将简要探讨ES中的数据类型。
Lucene的FieldType是描述字段属性的核心,包含16个属性,如倒排索引和DocValuesType,后者支持聚合排序。官方定义的类型如TextField,仅索引、分词但不存储,而用户可以根据需求自定义数据类型,尽管在ES中,所有数据类型都是自定义的。
Lucene文件格式类型各异,如Norms和Pre-Document Values,根据FieldType设置的不同属性,文件类型和存储结构会相应变化。Lucene通过不同的压缩类型和数据结构存储数据,但详细实现较为复杂。
在ES中,数据类型分为Meta-fields和Fields or properties。Meta-fields包括元数据字段如_index、_type和_id,它们存储在特定位置,但处理方式各异。Fields或properties则是开发的核心,包括String(text和keyword)、数字类型、Range类型、时间类型、Boolean和Binary等。
复杂数据类型如Object和Nested用于处理嵌套结构,而Geo-point和Geo-shape用于地理信息。特殊数据类型如IP、completion和Join则在特定场景下使用。Array要求数组内字段类型一致,Multi-fields则支持多种处理方式的字符串字段。
总体来说,ES的字段类型丰富且友好,但并非所有场景都适用。开发者在实际应用中应参考官方文档和代码来选择和使用。
参考资源:org.apache.lucene.codecs.lucene90 (Lucene 9.0.0核心API)、Elasticsearch Guide [7.5]、elastic.co/guide/en/ela...