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 相关文章推荐
利用QT写一个极简单的图形化Python闹钟程序
Apr 07 Python
python日志记录模块实例及改进
Feb 12 Python
Python中.py文件打包成exe可执行文件详解
Mar 22 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
Mar 19 Python
在PyCharm下使用 ipython 交互式编程的方法
Jan 17 Python
Python读取指定日期邮件的实例
Feb 01 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
Feb 16 Python
Python脚本修改阿里云的访问控制列表的方法
Mar 08 Python
python自动化测试之如何解析excel文件
Jun 27 Python
python re.sub()替换正则的匹配内容方法
Jul 22 Python
使用Matplotlib 绘制精美的数学图形例子
Dec 13 Python
Python lxml模块的基本使用方法分析
Dec 21 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
yii操作cookie实例简介
2014/07/09 PHP
PHP转盘抽奖接口实例
2015/02/09 PHP
Yii2.0预定义的别名功能小结
2016/07/04 PHP
PHP Mysqli 常用代码集合
2016/11/12 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
javascript显示隐藏层比较不错的方法分析
2008/09/30 Javascript
jquery.jstree 增加节点的双击事件代码
2010/07/27 Javascript
jQuery的写法不同导致的兼容性问题的解决方法
2010/07/29 Javascript
javascript alert乱码的解决方法
2013/11/05 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
jQuery使用deferreds串行多个ajax请求
2016/08/22 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
详谈jQuery.load()和Jsp的include的区别
2017/04/12 jQuery
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
nodejs+mongodb aggregate级联查询操作示例
2018/03/17 NodeJs
vue.js template模板的使用(仿饿了么布局)
2018/08/13 Javascript
koa源码中promise的解读
2018/11/13 Javascript
浅谈vue中关于checkbox数据绑定v-model指令的个人理解
2018/11/14 Javascript
vue 计算属性和侦听器的使用小结
2021/01/25 Vue.js
在Django的视图中使用form对象的方法
2015/07/18 Python
浅谈Python生成器generator之next和send的运行流程(详解)
2017/05/08 Python
Python使用django搭建web开发环境
2017/06/09 Python
Django与JS交互的示例代码
2017/08/23 Python
使用Python快速制作可视化报表的方法
2019/02/03 Python
超简单使用Python换脸实例
2019/03/27 Python
tensorflow之变量初始化(tf.Variable)使用详解
2020/02/06 Python
Python threading.local代码实例及原理解析
2020/03/16 Python
html5中canvas学习笔记2-判断浏览器是否支持canvas
2013/01/06 HTML / CSS
瑞士领先的网上超市:LeShop.ch
2018/11/14 全球购物
英国在线照明超市:Castlegate Lights
2019/10/30 全球购物
停车位租赁协议书
2014/09/24 职场文书
二十年同学聚会感言
2015/07/30 职场文书
Java各种比较对象的方式的对比总结
2021/06/20 Java/Android
java实现面板之间切换功能
2022/06/10 Java/Android
MySQL数据库实验之 触发器和存储过程
2022/06/21 MySQL