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实现优先级队列结构的方法详解
Jun 02 Python
python win32 简单操作方法
May 25 Python
Python编程实现从字典中提取子集的方法分析
Feb 09 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
Apr 01 Python
python基础梳理(一)(推荐)
Apr 06 Python
用Python中的turtle模块画图两只小羊方法
Apr 09 Python
Python+selenium点击网页上指定坐标的实例
Jul 05 Python
简单了解python反射机制的一些知识
Jul 13 Python
python3安装crypto出错及解决方法
Jul 30 Python
如何在Cloud Studio上执行Python代码?
Aug 09 Python
使用Django实现把两个模型类的数据聚合在一起
Mar 28 Python
Python使用永中文档转换服务
May 06 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
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
PHP中使用mpdf 导出PDF文件的实现方法
2018/10/22 PHP
JS backgroundImage控制
2009/05/19 Javascript
JQuery 文本框使用小结
2010/05/22 Javascript
突发奇想的一个jquery插件
2010/11/19 Javascript
固定网页背景图同时保持图片比例的思路代码
2013/08/15 Javascript
怎么选择Javascript框架(Javascript Framework)
2013/11/22 Javascript
js获取通过ajax返回的map型的JSONArray的方法
2014/01/09 Javascript
js调用后台、后台调用前台等方法总结
2014/04/17 Javascript
IE中的File域无法清空使用jQuery重设File域
2014/04/24 Javascript
深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解
2015/03/05 Javascript
AngularJS 路由详解和简单实例
2016/07/28 Javascript
JavaScript实现的微信二维码图片生成器的示例
2016/10/26 Javascript
Angular2入门--架构总览
2017/03/29 Javascript
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
vue不操作dom实现图片轮播的示例代码
2019/12/18 Javascript
原生JavaScript实现的无缝滚动功能详解
2020/01/17 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
Python3实现的腾讯微博自动发帖小工具
2013/11/11 Python
Python出现segfault错误解决方法
2016/04/16 Python
如何将python中的List转化成dictionary
2016/08/15 Python
Python使用plotly绘制数据图表的方法
2017/07/18 Python
pytorch + visdom CNN处理自建图片数据集的方法
2018/06/04 Python
用Python解决x的n次方问题
2019/02/08 Python
Python实现的调用C语言函数功能简单实例
2019/03/13 Python
提升Python程序性能的7个习惯
2019/04/14 Python
mac使用python识别图形验证码功能
2020/01/10 Python
Python class的继承方法代码实例
2020/02/14 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
2020/02/28 Python
python中类与对象之间的关系详解
2020/12/16 Python
技术员个人工作总结
2015/03/03 职场文书
经营目标责任书
2015/05/08 职场文书
社区服务理念口号
2015/12/25 职场文书
护理工作心得体会
2016/01/22 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js
python析构函数用法及注意事项
2021/06/22 Python