前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ElasticSearch 中的地理类型和特殊类型,这个周末圆满了!

ElasticSearch 中的地理类型和特殊类型,这个周末圆满了!

作者头像
江南一点雨
发布2020-11-26 14:48:34
7140
发布2020-11-26 14:48:34
举报
文章被收录于专栏:玩转JavaEE

松哥原创的 Spring Boot 视频教程已经杀青,感兴趣的小伙伴戳这里-->Spring Boot+Vue+微人事视频教程


hello 各位小伙伴,昨天和大家分享了 Es 中数据类型的前两种:核心类型和复合类型,今天我们来继续学习剩下的两种:地理类型和特殊类型。

这个周末圆满了!

本文是ElasticSearch 系列第十三篇,和大家聊一聊索引的基本操作,前十二篇传送门:

  1. 打算出一个 ElasticSearch 教程,谁赞成,谁反对?
  2. ElasticSearch 从安装开始
  3. ElasticSearch 第三弹,核心概念介绍
  4. ElasticSearch 中的中文分词器该怎么玩?
  5. ElasticSearch 索引基本操作
  6. ElasticSearch 文档的添加、获取以及更新
  7. ElasticSearch 文档的删除和批量操作
  8. ElasticSearch 文档路由,你的数据到底存在哪一个分片上?
  9. ElasticSearch 并发的处理方式:锁和版本控制
  10. ElasticSearch 中的倒排索引到底是什么?
  11. ElasticSearch 动态映射与静态映射
  12. ElasticSearch 四种字段类型详解(周末加油站

地理类型:

特殊类型:

如果大家觉得视频风格还能接受,也可以看看松哥的付费视频:Spring Boot+Vue+微人事视频教程

以下是视频笔记:

注意,笔记只是视频内容的一个简要记录,因此笔记内容比较简单,完整的内容可以查看视频。

10.3 地理类型

使用场景:

  • 查找某一个范围内的地理位置
  • 通过地理位置或者相对中心点的距离来聚合文档
  • 把距离整个到文档的评分中
  • 通过距离对文档进行排序
10.3.1 geo_point

geo_point 就是一个坐标点,定义方式如下:

代码语言:javascript
复制
PUT people
{
  "mappings": {
    "properties": {
      "location":{
        "type": "geo_point"
      }
    }
  }
}

创建时指定字段类型,存储的时候,有四种方式:

代码语言:javascript
复制
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 类型:

代码语言:javascript
复制
PUT people
{
  "mappings": {
    "properties": {
      "location":{
        "type": "geo_shape"
      }
    }
  }
}

添加文档时需要指定具体的类型:

代码语言:javascript
复制
PUT people/_doc/1
{
  "location":{
    "type":"point",
    "coordinates": [108.94,34.27]
  }
}

如果是 linestring,如下:

代码语言:javascript
复制
PUT people/_doc/2
{
  "location":{
    "type":"linestring",
    "coordinates": [[108.94,34.27],[100,33]]
  }
}

10.4 特殊类型

10.4.1 IP

存储 IP 地址,类型是 ip:

代码语言:javascript
复制
PUT blog
{
  "mappings": {
    "properties": {
      "address":{
        "type": "ip"
      }
    }
  }
}

添加文档:

代码语言:javascript
复制
PUT blog/_doc/1
{
  "address":"192.168.91.1"
}

搜索文档:

代码语言:javascript
复制
GET blog/_search
{
  "query": {
    "term": {
      "address": "192.168.0.0/16"
    }
  }
}
10.4.2 token_count

用于统计字符串分词后的词项个数。

代码语言:javascript
复制
PUT blog
{
  "mappings": {
    "properties": {
      "title":{
        "type": "text",
        "fields": {
          "length":{
            "type":"token_count",
            "analyzer":"standard"
          }
        }
      }
    }
  }
}

相当于新增了 title.length 字段用来统计分词后词项的个数。

添加文档:

代码语言:javascript
复制
PUT blog/_doc/1
{
  "title":"zhang san"
}

可以通过 token_count 去查询:

代码语言:javascript
复制
GET blog/_search
{
  "query": {
    "term": {
      "title.length": 2
    }
  }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 江南一点雨 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 10.3 地理类型
    • 10.3.1 geo_point
      • 10.3.2 geo_shape
      • 10.4 特殊类型
        • 10.4.1 IP
          • 10.4.2 token_count
          相关产品与服务
          Elasticsearch Service
          腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档