您的位置:

Elasticsearch字段类型详解

一、text

text类型是最常用的类型之一,用于存储文本内容。文本内容可以分词,也就是说,输入的文本会被自动分词成多个单词,方便后续的搜索和匹配。下面是一个示例代码:

PUT my_index
{
  "mappings": {
    "properties": {
      "message": {
        "type": "text"
      }
    }
  }
}

可以看到,要使用text类型,只需要在字段映射中设置type为text即可。下面是text类型的一些配置选项:

1、analyzer

analyzer决定了分析器的种类,常用的分析器包括standard、english、chinese等。默认情况下,使用的是standard分析器。下面是一个示例代码:

PUT my_index
{
  "mappings": {
    "properties": {
      "message": {
        "type": "text",
        "analyzer": "english"
      }
    }
  }
}

2、fielddata

fielddata表示是否需要对该字段进行聚合和排序等操作。默认情况下,text类型不支持fielddata,需要手动开启。下面是一个示例代码:

PUT my_index
{
  "mappings": {
    "properties": {
      "message": {
        "type": "text",
        "fielddata": true
      }
    }
  }
}

二、keyword

keyword类型用于存储关键词,不进行分词。下面是一个示例代码:

PUT my_index
{
  "mappings": {
    "properties": {
      "tags": {
        "type": "keyword"
      }
    }
  }
}

与text类型不同,keyword类型不支持analyzer和fielddata选项。但是,可以通过设置ignore_above选项来限制关键词的长度。下面是一个示例代码:

PUT my_index
{
  "mappings": {
    "properties": {
      "tags": {
        "type": "keyword",
        "ignore_above": 256
      }
    }
  }
}

三、date

date类型用于存储日期,支持多种日期格式。下面是一个示例代码:

PUT my_index
{
  "mappings": {
    "properties": {
      "timestamp": {
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss"
      }
    }
  }
}

date类型也支持其他的配置选项,如timezone、locale等。

四、integer

integer类型用于存储整数。下面是一个示例代码:

PUT my_index
{
  "mappings": {
    "properties": {
      "count": {
        "type": "integer"
      }
    }
  }
}

integer类型也支持其他的配置选项,如coerce、ignore_malformed等。

五、float

float类型用于存储浮点数。下面是一个示例代码:

PUT my_index
{
  "mappings": {
    "properties": {
      "price": {
        "type": "float"
      }
    }
  }
}

float类型也支持其他的配置选项,如coerce、ignore_malformed等。

六、boolean

boolean类型用于存储布尔值。下面是一个示例代码:

PUT my_index
{
  "mappings": {
    "properties": {
      "available": {
        "type": "boolean"
      }
    }
  }
}

boolean类型也支持其他的配置选项,如null_value等。

七、geo_point

geo_point类型用于存储经纬度信息,可以用来做地理位置搜索。下面是一个示例代码:

PUT my_index
{
  "mappings": {
    "properties": {
      "location": {
        "type": "geo_point"
      }
    }
  }
}

geo_point类型也支持其他的配置选项,如geohash、geohash_prefix、geohash_precision等。