松哥原创的 Spring Boot 视频教程已经杀青,感兴趣的小伙伴戳这里-->Spring Boot+Vue+微人事视频教程
hello 各位小伙伴,昨天和大家分享了 Es 中数据类型的前两种:核心类型和复合类型,今天我们来继续学习剩下的两种:地理类型和特殊类型。
这个周末圆满了!
本文是ElasticSearch 系列第十三篇,和大家聊一聊索引的基本操作,前十二篇传送门:
- 
打算出一个 ElasticSearch 教程,谁赞成,谁反对? 
 
- 
ElasticSearch 从安装开始 
 
- 
ElasticSearch 第三弹,核心概念介绍 
 
- 
ElasticSearch 中的中文分词器该怎么玩? 
 
- 
ElasticSearch 索引基本操作 
 
- 
ElasticSearch 文档的添加、获取以及更新 
 
- 
ElasticSearch 文档的删除和批量操作 
 
- 
ElasticSearch 文档路由,你的数据到底存在哪一个分片上? 
 
- 
ElasticSearch 并发的处理方式:锁和版本控制 
 
- 
ElasticSearch 中的倒排索引到底是什么? 
 
- 
ElasticSearch 动态映射与静态映射 
 
- 
ElasticSearch 四种字段类型详解(周末加油站 
 
地理类型:
特殊类型:
如果大家觉得视频风格还能接受,也可以看看松哥的付费视频:Spring Boot+Vue+微人事视频教程
以下是视频笔记:
注意,笔记只是视频内容的一个简要记录,因此笔记内容比较简单,完整的内容可以查看视频。
10.3 地理类型
使用场景:
- 
查找某一个范围内的地理位置 
 
- 
通过地理位置或者相对中心点的距离来聚合文档 
 
- 
把距离整个到文档的评分中 
 
- 
通过距离对文档进行排序 
 
10.3.1 geo_point
geo_point 就是一个坐标点,定义方式如下:
PUT people
{
  "mappings": {
    "properties": {
      "location":{
        "type": "geo_point"
      }
    }
  }
}
创建时指定字段类型,存储的时候,有四种方式:
PUT people/_doc/1
{
  "location":{
    "lat": 34.27,
    "lon": 108.94
  }
}
PUT people/_doc/2
{
  "location":"34.27,108.94"
}
PUT people/_doc/3
{
  "location":"uzbrgzfxuzup"
}
PUT people/_doc/4
{
  "location":[108.94,34.27]
}
注意,使用数组描述,先经度后纬度。
地址位置转 geo_hash:http://www.csxgame.top/#/
10.3.2 geo_shape

指定 geo_shape 类型:
PUT people
{
  "mappings": {
    "properties": {
      "location":{
        "type": "geo_shape"
      }
    }
  }
}
添加文档时需要指定具体的类型:
PUT people/_doc/1
{
  "location":{
    "type":"point",
    "coordinates": [108.94,34.27]
  }
}
如果是 linestring,如下:
PUT people/_doc/2
{
  "location":{
    "type":"linestring",
    "coordinates": [[108.94,34.27],[100,33]]
  }
}
10.4 特殊类型
10.4.1 IP
存储 IP 地址,类型是 ip:
PUT blog
{
  "mappings": {
    "properties": {
      "address":{
        "type": "ip"
      }
    }
  }
}
添加文档:
PUT blog/_doc/1
{
  "address":"192.168.91.1"
}
搜索文档:
GET blog/_search
{
  "query": {
    "term": {
      "address": "192.168.0.0/16"
    }
  }
}
10.4.2 token_count
用于统计字符串分词后的词项个数。
PUT blog
{
  "mappings": {
    "properties": {
      "title":{
        "type": "text",
        "fields": {
          "length":{
            "type":"token_count",
            "analyzer":"standard"
          }
        }
      }
    }
  }
}
相当于新增了 title.length 字段用来统计分词后词项的个数。
添加文档:
PUT blog/_doc/1
{
  "title":"zhang san"
}
可以通过 token_count 去查询:
GET blog/_search
{
  "query": {
    "term": {
      "title.length": 2
    }
  }
}

本文分享自微信公众号 - 江南一点雨(a_javaboy)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
相关文章
暂无评论...
 
                             
                         
                            