架构师成长记_第八周_01_分布式搜索引擎elasticsearch快速入门(代码片段)

_大木_ _大木_     2022-12-12     751

关键词:

文章目录

分布式搜索引擎 ElasticSearch 快速入门

1. 搜索引擎的对比(Lucene vs Solr vs Elasticsearch)

1.1 Lucene

Lucene 是java类库, 它完全是由java进行开发编写的, 它并不是应用程序, 是一些api来提供调用, 本质就是一个jar包, 通过导入项目来调用API的方法.
它只能适用于java语言, 并且很难进行分布式的横向扩展.

1.2 Solr

Solr 是基于 Lucene 构建的一个开源搜索引擎, 本质上是对Lucene 的一层封装, 是Apache 使用java进行开发的, 可以独立的部署在 tomcat 或者其他容器之中, 可以配合 zookeeper 进行集群实现, 它的容错性, 可扩展性也很高.

1.3 Elasticsearch(官网描述)

ES 也是基于 Lucene, 也封装了一些Lucene的类库, 出现于 Solr 之后, 也是分布式的搜索引擎, 提供了一系列的restful接口来让我们进行查询操作, 可以对任何的开发语言进行对接, 所以它的可扩展性是非常高的.
ES 也提供了一些近实时检索的搜索服务, 也支持PB级别(1024T)的搜索.

2. ES 核心术语

与关系型数据库进行类比: 一个ES 就相当于 一个数据库

2.1 索引库 index (相当于 数据库中的表)

2.2 类型 type (相当于 数据库的 表逻辑类型)

比如该表是描述 food食物的等, 用于区分不同的表, 所以type 是用于区分索引index的

PS: 最新的 ES 已经取消了 type, 在5.x, 6.x版本存在

2.3 文档 document (相当于 表的行(记录), 它是以 json的形式存在)

2.4 字段 fields (相当于 表的列)

PS:

在一个ES库, 是可以有多个索引库.
文档是以json的形式存在在, 一个文档就是表中的一条记录.
索引是由很多的文档构成, 文档是由多个字段构成.

如下:

user_index (这是一个索引库, 下面是大括号就是多个文档,文档中的 id,name,age 就是字段)

	id: 1001,   
	name: jason,
	age: 18
,

	id: 1002,  
	name: kason,
	age: 15

2.5 映射 mapping (相当于表的结构类型)

如一个表中的 id 是int类型, name 是varchar 类型, 在ES 中也有类似的定义, 称为 mapping, 如字段是怎么样的数据类型, 是否是被索引, 是否进行分词等等.

2.6 近实时 NRT (Near real time)

当一个新的索引建立新的文档之后, 这个文档就需要被用户去搜索, 用户在搜索这个文档的中间会有一定的延时(1秒左右), 称之为近实时.

2.7 节点 node (每一个服务器)

ES 一般是处于集群中的, 我们可以构建多个节点作为 ES 服务.

2.8 shard replica 数据分片与备份

分片(shard):

把索引库拆分为多份, 分别放在不同的节点上, 比如有3个节点, 3个节点的所有内容加在一起是一个完整的索引库, 分别保存到三个节点上, 目的是为了水平扩展, 提高吞吐量.

备份(replica):

每个 shard 的备份.

PS1: ES 集群架构原理

PS2 : 简称

shard = primary shard (主分片)
replica = replica shard (备份节点)

3. 倒排索引

倒排索引源于实际应用中需要根据属性的值来查找记录, 这种索引表中的每一项都包括一个属性值和包含该属性值的各个记录地址. 由于不是根据记录来确定属性, 而是根据属性来确定记录的位置, 所以称为倒排索引

架构师成长记_第八周_18_es-滚动搜索(代码片段)

ES-滚动搜索PS:滚动搜索是基于快照的方式,所以在搜索的时候,如果用户进行更新数据,数据是不会被滚动搜索加载到的.1.首次滚动搜索.POST:http://192.168.92.140:9200/shop/_search?scroll=1m"query":"match_all":,"sort":["_doc"... 查看详情

架构师成长记_第八周_18_es-滚动搜索(代码片段)

ES-滚动搜索PS:滚动搜索是基于快照的方式,所以在搜索的时候,如果用户进行更新数据,数据是不会被滚动搜索加载到的.1.首次滚动搜索.POST:http://192.168.92.140:9200/shop/_search?scroll=1m"query":"match_all":,"sort":["_doc"... 查看详情

架构师成长记_第八周_17_es-深度分页

ES-深度分页PS:因为使用from+size的方式只可以搜索小于等于10000的数据,这个是ES做的一个性能防护,防止用户搜索过深而导致的系统性能下降.1.查看深度分页设置2.修改深度分页设置,提升搜索量3.再次搜索之前的9999的分类搜索量 查看详情

架构师成长记_第八周_20_elasticsearch集群构建(代码片段)

文章目录Elasticsearch集群构建1.先进行克隆三台服务器2.搭建es集群2.1分别对三台服务器(es01,es02,es03)做如下操作2.2操作三台服务器(es01,es02,es03节点)3.查看配置信息`moreelasticsearch.yml|grep^[^#]`4.启动ES集群Elasticsearch集群构建1.先进... 查看详情

架构师成长记_第八周_20_elasticsearch集群构建(代码片段)

文章目录Elasticsearch集群构建1.先进行克隆三台服务器2.搭建es集群2.1分别对三台服务器(es01,es02,es03)做如下操作2.2操作三台服务器(es01,es02,es03节点)3.查看配置信息`moreelasticsearch.yml|grep^[^#]`4.启动ES集群Elasticsearch集群构建1.先进... 查看详情

架构师成长记_第八周_22_logstash数据同步(代码片段)

文章目录1.logstash简介PS:2.logstash安装2.1(前提是安装好jdk)上传logstash,mysql驱动2.2logstash同步配置2.3启动logstashPS:1.logstash简介Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起... 查看详情

架构师成长记_第八周_06_es-文档的基本操作

文章目录ES-文档的基本操作:添加文档与自动映射1.添加文档2.添加多个文档ES-文档的基本操作:添加文档与自动映射1.添加文档2.添加多个文档 查看详情

架构师成长记_第八周_13_dsl搜索-查询所有内容与分页查询(代码片段)

文章目录DSL查询所有内容与分页查询1.DSL查询所有内容2.DSL查询部分字段内容2.DSL查询进行分页查询前7条数据查询第10条之后的10条数据DSL查询所有内容与分页查询1.DSL查询所有内容"query":"match_all":2.DSL查询部分字段内容... 查看详情

架构师成长记_第八周_18_es-批量查询(代码片段)

文章目录ES-批量查询1.之前使用的批量查询方式2.使用_mget进行批量查询3.二者的区别ES-批量查询1.之前使用的批量查询方式GET:http://192.168.92.140:9200/shop/_doc/_search"query":"ids":"type":"_doc","values":["100 查看详情

架构师成长记_第八周_18_es-批量查询(代码片段)

文章目录ES-批量查询1.之前使用的批量查询方式2.使用_mget进行批量查询3.二者的区别ES-批量查询1.之前使用的批量查询方式GET:http://192.168.92.140:9200/shop/_doc/_search"query":"ids":"type":"_doc","values":["100 查看详情

架构师成长记_第八周_21_springboot整合elasticsearch(代码片段)

文章目录Springboot整合elasticsearch1.创建es模块2.在es的模块下引入依赖PS:改版本对应的es是6.4.3,故我们集群ES的配置需要下调为6.4.3.(或者提升这里的版本)3.创建yml配置文件4.创建启动类5.运行报错(是由于无netty配置引起的错误)6.解决... 查看详情

架构师成长记_第八周_21_springboot整合elasticsearch(代码片段)

文章目录Springboot整合elasticsearch1.创建es模块2.在es的模块下引入依赖PS:改版本对应的es是6.4.3,故我们集群ES的配置需要下调为6.4.3.(或者提升这里的版本)3.创建yml配置文件4.创建启动类5.运行报错(是由于无netty配置引起的错误)6.解决... 查看详情

架构师成长记_第八周_05_mappings自定义创建映射(代码片段)

文章目录mappings自定义创建映射1.创建索引如下2.测试我们的索引是否可以分词(标准分词器不识别中文)进行内容分析3.为该索引新增数据类型1.新增id和age字段(long类型和integer类型,==没有int哦==)2.新增money1和money2字段(dou... 查看详情

架构师成长记_第八周_19_es-批量操作bulk(代码片段)

文章目录ES-批量操作bulk1.bulk之create(批量新增)1.1第一种写法1.2第二种写法PS:批量新增注意:2.bulk之index(覆盖新增)3.bulk之update(批量更新)4.bulk之delete(批量删除)5.bulk之批量操作综合PS:ES-批量操作bulk1.bulk之create(批量新增)1.1第一种写法... 查看详情

架构师成长记_第八周_19_es-批量操作bulk(代码片段)

文章目录ES-批量操作bulk1.bulk之create(批量新增)1.1第一种写法1.2第二种写法PS:批量新增注意:2.bulk之index(覆盖新增)3.bulk之update(批量更新)4.bulk之delete(批量删除)5.bulk之批量操作综合PS:ES-批量操作bulk1.bulk之create(批量新增)1.1第一种写法... 查看详情

架构师成长记_第八周_13_dsl搜索-查询所有内容与分页查询(代码片段)

文章目录DSL查询所有内容与分页查询1.DSL查询所有内容2.DSL查询部分字段内容2.DSL查询进行分页查询前7条数据查询第10条之后的10条数据DSL查询所有内容与分页查询1.DSL查询所有内容"query":"match_all":2.DSL查询部分字段内容... 查看详情

架构师成长记_第八周_08_es-文档的基本操作(代码片段)

文章目录ES-文档的基本操作:查询方式一:根据_id进行查询方式二:_serach查询所有记录方式三:定制查询某些字段方式四:查询该索引下所有字段的定制的字段高效查询某个文档是否存在(这里只占用了87B传输大小)ES-文档的基本操作:查... 查看详情

架构师成长记_第八周_07_es-文档的基本操作(代码片段)

文章目录ES-文档的基本操作:新增与修改1.删除2.修改方式一:局部修改方式二:全量修改3.证明删除操作不是物理删除ES-文档的基本操作:新增与修改1.删除数据库中是根据主键进行删除,ES中也是一样,他可以根据我们的_id进行操作.这... 查看详情