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中OrderedDict的使用方法详解
May 05 Python
python实现简单点对点(p2p)聊天
Sep 13 Python
Python编程给numpy矩阵添加一列方法示例
Dec 04 Python
PyQt实现界面翻转切换效果
Apr 20 Python
Python在groupby分组后提取指定位置记录方法
Apr 20 Python
python中subprocess批量执行linux命令
Apr 27 Python
Python实现图片拼接的代码
Jul 02 Python
使用python实现快速搭建简易的FTP服务器
Sep 12 Python
python输入整条数据分割存入数组的方法
Nov 13 Python
Python学习笔记之函数的参数和返回值的使用
Nov 20 Python
Python.append()与Python.expand()用法详解
Dec 18 Python
python 读txt文件,按‘,’分割每行数据操作
Jul 05 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 header函数的常用http头设置
2015/06/25 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
一次因composer错误使用引发的问题与解决
2019/03/06 PHP
Avengerls vs KG BO3 第二场2.18
2021/03/10 DOTA
jQuery ul标签下拉菜单演示代码
2010/12/11 Javascript
js+xml生成级联下拉框代码
2012/07/24 Javascript
通过javascript把图片转化为字符画
2013/10/24 Javascript
JavaScript中setInterval的用法总结
2013/11/20 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
2014/01/13 Javascript
$.each与$().each的区别示例介绍
2014/03/20 Javascript
整理AngularJS中的一些常用指令
2015/06/16 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
2017/01/05 Javascript
js实现前端分页页码管理
2017/01/06 Javascript
微信小程序中的onLoad详解及简单实例
2017/04/05 Javascript
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
学习jQuery中的noConflict()用法
2018/09/28 jQuery
Vue实现简单分页器
2018/12/29 Javascript
webpack DllPlugin xxx is not defined解决办法
2019/12/13 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
使用Python编写Linux系统守护进程实例
2015/02/03 Python
详解Python中的多线程编程
2015/04/09 Python
在Python中使用成员运算符的示例
2015/05/13 Python
Python中subprocess的简单使用示例
2015/07/28 Python
python爬取微信公众号文章
2018/08/31 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
python 实现让字典的value 成为列表
2019/12/16 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
基于python实现操作git过程代码解析
2020/07/27 Python
Java的五个基础面试题
2016/02/26 面试题
新闻专业个人自我评价
2013/09/21 职场文书
2014国培学习感言
2014/03/05 职场文书
2014年专项整治工作总结
2014/11/17 职场文书
给女朋友的道歉短信
2015/05/12 职场文书