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文档方法分享
Dec 27 Python
python实现闹钟定时播放音乐功能
Jan 25 Python
Python SqlAlchemy动态添加数据表字段实例解析
Feb 07 Python
numpy中的高维数组转置实例
Apr 17 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
Jun 17 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
Jun 26 Python
python检测服务器端口代码实例
Aug 31 Python
python的等深分箱实例
Nov 22 Python
将pycharm配置为matlab或者spyder的用法说明
Jun 08 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
Sep 18 Python
Pycharm快捷键配置详细整理
Oct 13 Python
Python学习开发之图形用户界面详解
Aug 23 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
PHP4之COOKIE支持详解
2006/10/09 PHP
mysq GBKl乱码
2006/11/28 PHP
PHP 关于访问控制的和运算符优先级介绍
2013/07/08 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
jQuery版仿Path菜单效果
2011/12/15 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
2014/01/17 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
2014/10/17 Javascript
js实现类似MSN提示的页面效果代码分享
2015/08/24 Javascript
跟我学习javascript的for循环和for...in循环
2015/11/18 Javascript
解决ajax不能访问本地文件问题(利用js跨域原理)
2017/01/24 Javascript
js获取当前周、上一周、下一周日期
2017/03/19 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
详解webpack+express多页站点开发
2017/12/22 Javascript
详解vue-router 命名路由和命名视图
2018/06/01 Javascript
socket在egg中的使用实例代码详解
2019/05/30 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
2020/03/08 Javascript
[02:17]TI4西雅图DOTA2前线报道 啸天mik夫妻档解说
2014/07/08 DOTA
[07:54]DOTA2 MV《我的动力鞋》 ImbaTV 出品
2014/11/21 DOTA
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
python ElementTree 基本读操作示例
2009/04/09 Python
Python中的元类编程入门指引
2015/04/15 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
朴素贝叶斯Python实例及解析
2018/11/19 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
python中时间模块的基本使用教程
2019/05/14 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
python下PyGame的下载与安装过程及遇到问题
2019/08/04 Python
Django生成数据库及添加用户报错解决方案
2020/10/09 Python
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
大学生党员自我批评
2014/02/14 职场文书
平面设计求职信
2014/03/10 职场文书
如何写新闻稿
2015/07/18 职场文书
virtualenv隔离Python环境的问题解析
2022/06/21 Python