ElasticSearch 数据类型

  1、范围数据类型

    支持以下范围类型:

    integer_range : 一系列带符号的32位整数,最小值为,最大值为

    float_range:一系列单精度32位IEEE 754浮点值。

    long_range:一系列带符号的64位整数,最小值为,最大值为

    double_range:一系列双精度64位IEEE 754浮点值。

    date_range:系统历元以来的一系列日期值表示为无符号的64位整数毫秒。

    ip_range:支持IPv4或IPv6(或混合)地址的一系列ip值。

    以下是配置各种范围字段映射的示例:

PUT range_index
{
  "mappings": {
    "my_type": {
      "properties": {
        "expected_attendees": {
          "type": "integer_range"
        },
        "time_frame": {
          "type": "date_range", 
          "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
        }
      }
    }
  }
}

PUT range_index/my_type/1
{
  "expected_attendees" : { 
    "gte" : 10,
    "lte" : 20
  },
  "time_frame" : { 
    "gte" : "2015-10-31 12:00:00", 
    "lte" : "2015-11-01"
  }
}

    以下是名为“time_frame”的date_range字段的date_range查询示例

POST range_index/_search
{
  "query" : {
    "range" : {
      "time_frame" : { 
        "gte" : "2015-10-31",
        "lte" : "2015-11-01",
        "relation" : "within" 
      }
    }
  }
}

    

 

  2、日期数据类型

    JSON没有日期数据类型,所以Elasticsearch中的日期可以是:

    1、包含格式化日期的字符串,例如 “2015-01-01”或“2015/01/01 12:10:30”

    2、一个代表毫秒数的长数字

    3、一个代表秒的整数

    在内部,日期转换为UTC(如果指定时区)并存储为表示毫秒以后的长数字。

    日期格式可以自定义,但如果没有指定格式,则使用默认格式:

 

### Elasticsearch 数据类型的官方文档说明 Elasticsearch 提供了丰富的数据类型支持,这些数据类型用于定义字段的内容及其存储方式。以下是关于 Elasticsearch 数据类型的详细介绍: #### 1. **核心数据类型** Elasticsearch 的核心数据类型涵盖了常见的数值、文本和布尔值等基本需求[^1]。 - `text`:适用于全文检索的字符串字段。此类型会对输入内容进行分词处理以便于后续查询操作。 - `keyword`:适合精确匹配的字符串字段,不会被分析器拆解为个词条[^3]。 - `integer`, `long`, `float`, 和 `double`:分别表示不同精度范围内的数字值[^4]。 - `boolean`:逻辑值 true/false 表示开关状态或其他二元选项[^2]。 #### 2. **日期与时间戳** 对于时间和日期信息,Elasticsearch 使用专门设计的数据结构来优化索引效率并简化跨时区计算过程: - `date`:能够接受种格式的时间表达形式,包括但不限于 ISO8601 标准以及 Unix 时间戳(单位可选秒或毫秒)。例如 `"2015-01-01"` 或者 `1420070400`(代表Unix epoch time)[^4]。 #### 3. **复杂对象映射** 当面对嵌套关系或者数组列表这样的高级场景时,则需要用到更复杂的映射机制: - `object`: 当某个字段本身又是一个 JSON 对象的时候适用该类型;它允许进一步定义子属性的具体配置项. - `nested`: 如果希望保持父子级联之间的一致性和独立性则应该考虑采用 nested type 来代替普通的 object 类型因为后者会在扁平化过程中丢失部分关联特性. #### 示例代码展示如何创建带有不同类型字段的索引模板 ```json PUT my_index { "mappings": { "_doc": { "properties": { "name": {"type":"text"}, "age":{"type":"integer"}, "birthDate":{"type":"date","format":"yyyy-MM-dd||epoch_millis"} } } } } ``` 上述例子演示了一个简单的人员档案模型其中包含了姓名(name), 年龄(age),出生日期(birthDate)三个基本信息,并分别为它们设定了相应的数据类别。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值