Elasticsearch——Keyword字段类型

keyword family包括以下字段类型:

  • keyword,用于结构化内容,如ID、电子邮件地址、主机名、状态码、邮政编码或标记。
  • constant_keyword  始终包含相同值的keyword字段。
  • wildcard  非结构化machine-generated内容,wildcard类型针对具有大值或高基数的字段进行了优化。

keyword字段通常用于排序(sorting)、聚合(aggregations)和term-level查询,例如term。

避免使用keyword字段进行全文搜索(full-text)。改为使用文本(text)字段类型。

Keyword field type

下面是基本keyword字段的映射示例:

PUT my-index-000001
{
  "mappings": {
    "properties": {
      "tags": {
        "type":  "keyword"
      }
    }
  }
}

映射数字标识符

并非所有数值数据都应映射为numeric字段数据类型。Elasticsearch为了range查询会优化数值字段,如integer或long。但是,keyword字段更适合term和其他term-level查询。

range查询中很少使用诸如ISBN或产品ID之类的标识符。但是,它们通常使用term-level查询进行检索。

如果将数字标识符映射为keyword,请考虑:

  • 不打算使用范围(range)查询搜索标识符数据。
  • 快速检索很重要。keyword字段上的term查询搜索通常比数字字段上的term搜索快。

如果

### Elasticsearch 中字段数据类型定义 在Elasticsearch中,字段的数据类型决定了如何存储、索引以及查询文档中的特定部分。通过指定合适的数据类型,能够优化性能并提高搜索准确性。 #### 基本数据类型 基本数据类型涵盖了大多数常见的需求: - **字符串类型** - `text`:适用于全文检索的内容,会经过分词处理后再被索引[^1]。 ```json { "type": "text", "analyzer": "standard" } ``` - `keyword`:适合精确匹配的场景,不会进行任何分析直接保存原始值[^3]。 - **数值型** - 支持整数(`integer`)、浮点数(`float`)等多种形式,具体取决于应用场景所需精度和范围。 - **布尔型 (`boolean`)** - 表示真/假状态,简单明了。 - **日期时间 (`date`)** - 可以解析多种格式的时间戳或日期串,默认采用ISO8601标准表示法。 #### 复杂数据类型 对于更复杂的数据结构,则提供了专门的设计来满足这些特殊的需求: - **对象类型 (`object`)** 尽管Elasticsearch本身不支持嵌套的对象模型,但是可以通过设置`object`类型让JSON对象作为单个实体存在,并自动将其展开成平面化的键值对集合[^2]。 - **地理空间形状 (`geo_shape`)** 特定于地理位置的应用场合下非常有用,比如标记地图上的区域边界或者路径轨迹等。例如,在创建名为`scenic-spots`的索引来记录旅游景点的位置信息时,就可以利用此特性: ```json PUT scenic-spots { "mappings": { "properties": { "name": {"type": "keyword"}, "location_shape":{"type": "geo_shape"} } } } ``` #### 自定义子字段 (Fields) 为了增强灵活性,还可以在同一逻辑字段基础上附加额外的子字段配置项。这样做的好处是可以针对同一份源数据应用不同的预处理规则,进而实现更加精细的操作方式。例如下面的例子展示了如何在一个叫做`content`的主要文本字段之外再增加两个变体版本——分别采用了英文分词器和中文IK最大词语切分算法: ```json PUT /my_index { "mappings": { "properties": { "content": { "type": "text", "fields": { "english": { "type": "text", "analyzer": "english" }, "ik_max_word": { "type": "text", "analyzer": "ik_max_word" } } } } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值