ElasticSearch是基于Lucene框架的全文搜索引擎,是文档型数据库,索引(Index)定义了文档的逻辑存储和字段类型,文档类型是文档的集合,文档以索引定义的逻辑存储模型。

ElasticSearch的对象模型,本质也是存储数据,很多概念与MySQL类似的。

  • 索引(Index):相当于MySQL 实例中的一个 Database,用于定义文档类型的存储;在同一个索引中,同一个字段只能定义一个数据类型;

  • 文档类型(Type):相当于MySQL 中的 Table,描述文档中的各个字段的定义,ElasticSearch 7.0 以后已经废弃

  • 文档(Document):相当于MySQL 中的Row,存储数据,包含一个或多个存有数据的字段;

  • 字段(Field):相当于MySQL 中的的Column,文档的一个属性;

  • 映射配置(mappings):字段的数据类型、属性、是否索引、是否存储等特性

注意:从 ElasticSearch 7.0 开始,Type 被废弃!!!

在 7.0 以及之后的版本中,类型(Type)被废弃了。一个 index 中只有一个默认的 type,默认为_doc索引(Index)既可以被认为对应 MySQL 的Database,也可以认为对应 table。

  • ES 实例:对应 MySQL 实例中的一个 Database。

  • Index 对应 MySQL 中的 Table 。

  • Document 对应 MySQL 中表的记录。

Elasticsearch采用RESTful API的调用风格,在管理和使用ElasticSearch服务时,常用的HTTP动词有下面五个:

  • GET 请求:获取对象

  • POST 请求:更新对象

  • PUT 请求:创建对象

  • DELETE 请求:删除对象

  • HEAD 请求:获取对象基础信息

一、索引(Index)

1.1、创建索引

  • settings:索引库的设置

    • number_of_replicas:副本数量

    • number_of_shards:分片数量

1、创建索引,不指定分片和副本信息

PUT /goods

2、创建索引并指定分片和副本信息

PUT /user{"settings": {"index":{"number_of_shards":3,"number_of_replicas":0}}
}

1.2、查看索引

1、查看所有索引

GET /_cat/indices/*?v&s=index

2、查看索引信息

GET /user

3、查看索引配置

GET /user/_settings

4、查看所有索引配置

GET /_all/_settings

1.3、删除索引

1、删除索引

DELETE /user

二、映射(Mapping)

  • String类型,分为:

    • text:可分词,不可参与聚合

    • keyword:不可分词,数据会作为完整字段进行匹配,可以参与聚合

  • Numerical:数值类型,分两类

    • 基本数据类型:long、interger、short、byte、double、float、half_float

    • 浮点数的高精度类型:scaled_float

      • 需要指定一个精度因子,比如10或100。elasticsearch会把真实值乘以这个因子后存储,取出时再还原。

  • Date:日期类型

Elasticsearch可以对日期格式化为字符串存储,但是建议我们存储为毫秒值,存储为long,节省空间。

2.1、创建映射(Mapping)

2.1.1、Elasticsearch 7 先创建索引,再定义映射(Mapping)

1、创建索引

PUT /item
{"settings": {"index":{"number_of_shards":3,"number_of_replicas":0}}
}

2、创建映射 

PUT /item/_mapping
{"properties" : {"id" : {"type" : "long"},"name" : {"type" : "text"},"title" : {"type" : "text","index": true },"price" : {"type" : "double"},"brand" : {"type" : "keyword"},"category" : {"type" : "keyword"},"images" : {"type" : "keyword","index" : false}}
}

2.1.2、Elasticsearch7创建索引并指定mapping和settings

PUT /item
{"mappings" : {"properties" : {"id" : {"type" : "long"},"name" : {"type" : "text"},"title" : {"type" : "text","index": true },"price" : {"type" : "double"},"brand" : {"type" : "keyword"},"category" : {"type" : "keyword"},"images" : {"type" : "keyword","index" : false}}},"settings" : {"index" : {"number_of_shards":3,"number_of_replicas":0}}
}

2.2、查看映射

1、查看映射信息

GET /item/_mapping

三、文档(Document)

3.1、添加文档

3.1.1、POST方式添加文档

POST 用于更新数据,如果不存在,则会创建,如果存在,则更新。

1、指定id方式添加文档

POST /item/_doc/1
{"id": 1,"name": "小米Redmi K30pro","title": "Redmi K30 Pro骁龙865旗舰处理器8GB+128GB月幕白","brand": "小米","category": "手机","images": "http://img10.360buyimg.com/n1/s450x450_jfs/t1/100503/9/16216/163998/5e78a4e8E38043daa/3c6b4108571f1e91.jpg","price": 2699.00
}

 2、不指定id方式添加文档

POST /item/_doc/
{"id": 2,"name": "小米Redmi K30pro","title": "Redmi K30 Pro骁龙865旗舰处理器8GB+128GB太空灰","brand": "小米","category": "手机","images": "img14.360buyimg.com//n0/jfs/t1/105365/9/16400/389974/5e78ae27E56994049/eef08d8b49183faa.jpg","price": 2699.00
}

3.1.2、PUT方式添加文档

PUT添加文档,如果不存在,则创建,如果存在,则更新,PUT方式添加文档,必须指定id。

PUT /item/_doc/3
{"id": 3,"name": "小米电视4A","title": "小米电视4A 60英寸 L60M5-4A 4K2GB+8GB 网络液晶平板电视","brand": "小米","category": "平板电视","images": "http://img13.360buyimg.com/n1/jfs/t1/140177/35/4226/222532/5f242f35Ec044ba21/0797a05dd6094aa3.jpg","price": 1699.00
}

3.1.3、_create方式创建文档

_create方式创建文档,必须指定id,如果id存在,则创建失败

POST /item/_create/4
{"id": 4,"name": "小米电视4A","title": "小米电视4A 60英寸 L60M5-4A 4K2GB+8GB 网络液晶平板电视","brand": "小米","category": "平板电视","images": "http://img13.360buyimg.com/n1/jfs/t1/140177/35/4226/222532/5f242f35Ec044ba21/0797a05dd6094aa3.jpg","price": 1699.00
}

3.2、查询文档

1、根据id查询文档

GET /item/_doc/1

2、查询文档部分属性

GET /item/_doc/1?_source=name,price

3.3、更新文档

1、POST覆盖更新文档

POST  /item/_doc/2
{"id": 2,"name": "小米Redmi K30pro plus","title": "Redmi K30 Pro骁龙865旗舰处理器16GB+256GB月幕白","brand": "小米","category": "手机","images": "http://img10.360buyimg.com/n1/s450x450_jfs/t1/100503/9/16216/163998/5e78a4e8E38043daa/3c6b4108571f1e91.jpg","price": 2999.00
}

2、部分更新文档部分字段

POST /item/_update/4
{"doc":{"id": 4,"name": "红米Redmi 10A"}
}

3.4、删除文档

1、根据id删除文档

DELETE /item/_doc/4

Elasticsearch 7.X索引、文档基本操作相关推荐

  1. 【Elasticsearch】java 操作 Elasticsearch 7.8 索引 文档 等操作

    本文为博主九师兄(QQ:541711153 欢迎来探讨技术)原创文章,未经允许博主不允许转载.有问题可以先私聊我,本人每天都在线,会帮助需要的人. 文章目录 1.概述 2. 案例 2.1 引入依赖 2 ...

  2. 分布式搜索elasticsearch 索引文档的增删改查 入门

    分布式搜索elasticsearch 索引文档的增删改查 入门 1.RESTful接口使用方法 为了方便直观我们使用Head插件提供的接口进行演示,实际上内部调用的RESTful接口. RESTful ...

  3. elasticsearch 第五篇(文档操作接口)

    INDEX API 示例: 1 2 3 4 5 PUT /test/user/1 { "name": "silence", "age": 2 ...

  4. ElasticSearch修改和删除文档

    ElasticSearch修改和删除文档 修改文档方式一:使用prepareUpdate,prepareIndex两者选其一皆可 client.prepareUpdate("blog2&qu ...

  5. 详细描述一下 Elasticsearch 更新和删除文档的过程。

    1.删除和更新也都是写操作,但是 Elasticsearch 中的文档是不可变的,因此不能被删除或者改动以展示其变更. 2.磁盘上的每个段都有一个相应的.del 文件.当删除请求发送后,文档并没有真的 ...

  6. lucene全文搜索之三:生成索引字段,创建索引文档(给索引字段加权)基于lucene5.5.3...

    前言:上一章中我们已经实现了索引器的创建,但是我们没有索引文档,本章将会讲解如何生成字段.创建索引文档,给字段加权以及保存文档到索引器目录 luncene5.5.3集合jar包下载地址:http:// ...

  7. Word文档基本操作

    Word文档基本操作 MathTpye公式格式应用于整个Word文档 方法一:从新公式预置加载格式 方法二:从当前文档加载格式 将改写模式修改为插入模式 MathTpye公式格式应用于整个Word文档 ...

  8. ElasticSearch学习笔记(二)—结构了解和索引文档增删改

    前面学习了ElasticSearch的概况以及一些配套插件的安装.这篇旨在记录对ES结构的了解和一些基本的操作. ElasticSearch结构: 对于ES来说,有几个专有名词.比如索引,类型,id这 ...

  9. Elasticsearch:运用 Java 对索引文档进行搜索

    这是这个系列文章中的其中一篇文章: Elasticsearch:运用 Java 创建索引并写入数据 Elasticsearch:运用 Java 更新 Elasticsearch 文档 Elastics ...

最新文章

  1. 数据结构与算法——线性结构——线性表及其表示
  2. [SDOI2009]Elaxia的路线
  3. 如何使用'git reset --hard HEAD'恢复到之前的提交? [重复]
  4. poj3666(DP+离散化)
  5. How does asp.net web api work?
  6. Android 中 Activity 的生命周期
  7. MAATLAB GUI——回调函数的设置(Callbacks)
  8. UIActionSheet 多项弹出框
  9. 计算机教学改革主要内容,计算机教学改革主要内容和措施.doc
  10. 【CV】如何使用Tensorflow提供的Object Detection API--3--手工标注数据
  11. 郑州大学期末php试题,郑州大学英语期末考试试题及答案
  12. c语言数据域和指针域,C语言的变量域和指针
  13. 7-3 前序序列创建二叉树 (25 分) PTA
  14. 用python画蜡笔小新的步骤_蜡笔小新 - python代码库 - 云代码
  15. 分享:Android清除本地数据缓存代码
  16. SPOOLing和虚拟化
  17. POI使用公式的问题,POI对excel函数的支持
  18. mjpeg stream 和FFmpeg视频图像读取分析
  19. Unity 调用系统自带的虚拟键盘
  20. python中pytest教程_Pytest安装新手详细教程

热门文章

  1. 【社会网络分析_04】ucinet中心度密度测量与凝聚子群发现
  2. 如何用数学知识提升情商?数学学霸们的6大思维习惯
  3. 前端开发工程师如何在2013年里提升自己【转】--2016已更新升级很多何去何从?...
  4. 蓝牙BLEcc2540如何添加特征值
  5. 2018年中小型B2B或B2C网站如何突破?
  6. 联想计算机如何修改启动顺序,联想电脑怎么在BOSS里设置启动次序
  7. git错误之Submit including parents
  8. 高防BGP服务器速度怎么样?选用高防BGP服务器需要考虑什么
  9. L2TP详解(四)——LAC自动拨号隧道和会话建立过程
  10. 如何学习嵌入式系统(基于ARM平台)