ElasticSearch 常用数据结构

ElasticSearch 常用数据结构

字符串类型

字符串类型:是ES最常用的类型之一。其内部使用了倒排索引算法。目前有两类字符串类型:text、keyword。

基础概念

  • Keyword 类型:用于索引结构化内容(例如ID、电子邮件地址),默认不分词,应用场景:精准匹配、排序、聚合分析。
  • Text 类型:用于全文检索领域(例如电子邮件内容、日志内容等),默认进行分词,应用场景:全文检索领域。

实践

  • Keyword

    1.创建mapping(定义数据结构)

POST test_datafields/_mappings
{
    "mappings":{
        "properties": {
            "age": {
                "type" : "integer"
            },
            "address": {
                "type": "text"
            },
            "name": {
                "type": "keyword"
            },
            "address_keyword": {
                "type": "keyword"
            }
        }
    }
}
2.插入数据
POST test_datafields/_doc/
{
   "age": 15,
   "address": "北京市朝阳区三元桥3号院8楼",
   "address_keyword": "北京市朝阳区三元桥3号院8楼",
   "name": "张三"
}

3.查询数据

GET test_datafields/_search
{
    "query": {
        "term":{
            "name":"张三"
        }
    }
}

4.结果展示

{
  "took": 1,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": 0.2876821,
    "hits": [
      {
        "_index": "test_datafields",
        "_type": "_doc",
        "_id": "aBD4GnsBUV1ZBCOyb3ch",
        "_score": 0.2876821,
        "_source": {
          "age": 15,
          "address": "北京市朝阳区三元桥3号院8楼",
          "name": "张三"
        }
      }
    ]
  }
}
  • Text
  1. 使用和keyword同样的mapping和索引数据(address 为text类型)

  2. 查询数据(针对address 和 address_keyword 两个字段同时进行全文检索,其中后者为keyword类型)

    GET test_datafields/_search
    {
        "query": {
            "match":{
                "address":"朝阳区"
            }
        }
    }
    
    GET test_datafields/_search
    {
        "query": {
            "match":{
                "address_keyword":"朝阳区"
            }
        }
    }
    
  1. 查询结果

    使用 text类型的address 查询结果:     
    {
        "_index": "test_datafields",
        "_type": "_doc",
        "_id": "-S4EG3sBSlQWAH8t7Wz-",
        "_score": 0.8630463,
        "_source": {
            "age": 15,
            "address": "北京市朝阳区三元桥3号院8楼",
            "address_keyword": "北京市朝阳区三元桥3号院8楼",
            "name": "张三"
        }
    }
    
    使用 keyword类型的address_keyword 查询结果: 
    {
        
    }
    
    

整型数值类型

基础概念

整型数值类型同样是ES最常用的类型之一,种类多样,应用场景广泛,可以根据实际需求来进行选择,提升资源利用率。

主要分类

类型名称 数值范围 空间占用
long -2^63 ~ 2^63-1 64bit
Integer -2^31 ~ 2^31-1 32bit
short -32768~32767 16bit
byte -128~127 8bit

浮点数值类型

基础概念

浮点数主要有以下四种,一般来说看数值范围是否够用选取最经济的为准。

主要分类

类型名称 空间占用
double 64bit
float 32bit
half_float 16bit
scaled_float 64bit

你可能感兴趣的:(ElasticSearch 常用数据结构)