Elasticsearch 数据类型及管理


Posted in Python onApril 19, 2022

Elasticsearch映射管理

在Elasticsearch 6.0.0或更高版本中创建的索引只包含一个mapping type。 在5.x中使用multiple mapping types创建的索引将继续像以前一样在Elasticsearch 6.x中运行。 Mapping types将在Elasticsearch 7.0.0中完全删除

一 映射介绍

在创建索引的时候,可以预先定义字段的类型及相关属性

Es会根据Json数据源的基础类型,猜测你想要映射的字段,将输入的数据转变成可以搜索的索引项。

Mapping是我们自己定义的字段数据类型,同时告诉es如何索引数据及是否可以被搜索

作用:会让索引建立的更加细致和完善

1.1 字段数据类型

string类型:text,keyword

数字类型:long,integer,short,byte,double,float

日期类型:data

布尔类型:boolean

binary类型:binary

复杂类型:object(实体,对象),nested(列表)

geo类型:geo-point,geo-shape(地理位置)

专业类型:ip,competion(搜索建议)

1.2 映射参数

属性 描述 适合类型
store 值为yes表示存储,no表示不存储,默认为no all
index yes表示分析,no表示不分析,默认为true text
null_value 如果字段为空,可以设置一个默认值,比如"NA"(传过来为空,不能搜索,na可以搜索) all
analyzer 可以设置索引和搜索时用的分析器,默认使用的是standard分析器,还可以使用whitespace,simple。都是英文分析器 all
include_in_all 默认es为每个文档定义一个特殊域_all,它的作用是让每个字段都被搜索到,如果想让某个字段不被搜索到,可以设置为false all
format 时间格式字符串模式 date

二 创建索引

text类型会取出词做倒排索引,keyword不会被分词,原样存储,原样匹配

mapping类型一旦确定,以后就不能修改了

#6.x的版本没问题
PUT books
{
  "mappings": {
    "book":{
      "properties":{
        "title":{
          "type":"text",
         	"analyzer": "ik_max_word"
        },
        "price":{
          "type":"integer"
        },
        "addr":{
          "type":"keyword"
        },
        "company":{
          "properties":{
            "name":{"type":"text"},
            "company_addr":{"type":"text"},
            "employee_count":{"type":"integer"}
          }
        },
        "publish_date":{"type":"date","format":"yyy-MM-dd"}
      }
    }
  }
}

7.x版本以后

PUT books
{
  "mappings": {
    "properties":{
      "title":{
        "type":"text",
        "analyzer": "ik_max_word"
      },
      "price":{
        "type":"integer"
      },
      "addr":{
        "type":"keyword"
      },
      "company":{
        "properties":{
          "name":{"type":"text"},
          "company_addr":{"type":"text"},
          "employee_count":{"type":"integer"}
        }
      },
      "publish_date":{"type":"date","format":"yyy-MM-dd"}
    }
  }
}

插入数据测试:

PUT books/_doc/1
{
  "title":"大头儿子小偷爸爸",
  "price":100,  
  "addr":"北京天安门",
  "company":{
    "name":"我爱北京天安门",
    "company_addr":"我的家在东北松花江傻姑娘",
    "employee_count":10
  },
  "publish_date":"2019-08-19"
}
#测试数据2
PUT books/_doc/2
{
  "title":"白雪公主和十个小矮人",
  "price":"99", #写字符串会自动转换
  "addr":"黑暗森里",
  "company":{
    "name":"我的家乡在上海",
    "company_addr":"朋友一生一起走",
    "employee_count":10
  },
  "publish_date":"2018-05-19"
}

三 查看索引

#查看books索引的mapping
GET books/_mapping
#获取所有的mapping
GET _all/_mapping

以上就是Elasticsearch映射字段数据类型及管理的详细内容!

Python 相关文章推荐
Python中的高级函数map/reduce使用实例
Apr 13 Python
使用python 和 lint 删除项目无用资源的方法
Dec 20 Python
numpy中的高维数组转置实例
Apr 17 Python
解决Python print 输出文本显示 gbk 编码错误问题
Jul 13 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
Mar 05 Python
python与C、C++混编的四种方式(小结)
Jul 15 Python
基于Django静态资源部署404的解决方法
Jul 28 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
Aug 17 Python
基于Python实现剪切板实时监控方法解析
Sep 11 Python
python读取hdfs上的parquet文件方式
Jun 06 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
Nov 20 Python
OpenCV-Python实现人脸磨皮算法
Jun 07 Python
Elasticsearch 索引操作和增删改查
Apr 19 #Python
python中redis包操作数据库的教程
Apr 19 #Python
python中pymysql包操作数据库方法
Apr 19 #Python
Python中Schedule模块使用详解 周期任务神器
Apr 19 #Python
python中urllib包的网络请求教程
Apr 19 #Python
python APScheduler执行定时任务介绍
Apr 19 #Python
Python数据可视化之Seaborn的安装及使用
You might like
php md5下16位和32位的实现代码
2008/04/09 PHP
PHP函数学习之PHP函数点评
2012/07/05 PHP
php获取文件后缀的9种方法
2016/03/22 PHP
预加载css或javascript的js代码
2010/04/23 Javascript
json数据与字符串的相互转化示例
2013/09/18 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
2013/12/11 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
2015/08/31 Javascript
knockoutjs动态加载外部的file作为component中的template数据源的实现方法
2016/09/01 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
ionic开发中点击input时键盘自动弹出
2016/12/23 Javascript
Bootstrap.css与layDate日期选择样式起冲突的解决办法
2017/04/07 Javascript
nodejs服务搭建教程 nodejs访问本地站点文件
2017/04/07 NodeJs
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
2017/04/21 jQuery
ionic 自定义弹框效果
2017/06/27 Javascript
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
vue-music关于Player播放器组件详解
2017/11/28 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
2019/02/27 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
mpvue实现左侧导航与右侧内容的联动
2019/10/21 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
pycharm 将django中多个app放到同个文件夹apps的处理方法
2018/05/30 Python
详解pyppeteer(python版puppeteer)基本使用
2019/06/12 Python
Python如何使用bokeh包和geojson数据绘制地图
2020/03/21 Python
Django模板之基本的 for 循环 和 List内容的显示方式
2020/03/31 Python
Python实现文件压缩和解压的示例代码
2020/08/12 Python
html5嵌入内容_动力节点Java学院整理
2017/07/07 HTML / CSS
苹果中国官方网站:Apple中国
2016/07/22 全球购物
师范应届毕业生自荐信
2013/11/18 职场文书
回门宴新郎答谢词
2014/01/12 职场文书
《石榴》教学反思
2014/03/02 职场文书
小学六年级学生评语
2014/04/22 职场文书
企业内部管理控制:银行存款控制制度范本
2020/01/10 职场文书
Mysql 如何查询时间段交集
2021/06/08 MySQL
JavaScript高级程序设计之变量与作用域
2021/11/17 Javascript
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript
vue-cil之axios的二次封装与proxy反向代理使用说明
2022/04/07 Vue.js