当前位置: 首页 > news >正文

# 05_Elastic Stack 从入门到实践(五)

05_Elastic Stack 从入门到实践(五)

一、Elasticsearch集群之分布式文档(文档的写操作、搜索操作)

1、文档的写操作

1)新建、索引和删除请求都是写(write)操作,它们必须在主分片上成功完成才能复制到相关的复制分片上。

在这里插入图片描述

2)下面我们罗列在主分片和复制分片上成功新建、索引或删除一个文档必要的顺序步骤:

– 客户端给 Node 1发送新建、索引或删除请求。
– 节点使用文档的_id确定文档属于分片0。它转发请求到Node3,分片0位于这个节点上。
– Node 3在主分片上执行请求,如果成功,它转发请求到相应的位于Node 1和Node2的复制节点上。当所有的复制节点报告成功,Node3报告成功到请求的节点,请求的节点再报告给客户端。

2、搜索文档(单个文档)

1)文档能够从主分片或任意一个复制分片被检索。

在这里插入图片描述

2)下面我们罗列在主分片或复制分片上检索一个文档必要的顺序步骤:

— 客户端给 Node 1发送get请求。
— 节点使用文档的_id确定文档属于分片0。分片0对应的复制分片在三个节点上都有。此时,它转发请求到Node 2.
— Node2返回文档(document)给Node1然后返回给客户端。

3)对于读请求,为了平衡负载,请求节点会为每个请求选择不同的分片–它会循环所有分片副本。

4)可能的情况是,一个被索引的文档已经存在于主分片上却还没来得及同步到复制分片上。这时复制分片会报告文档未找到,主分片会成功返回文档。一旦索引请求成功返回给用户,文档则在主分片和复制分片都是可用的。

二、Elasticsearch集群之分布式文档(全文搜索)

1、elasticsearch全文搜索

1)对于全文搜索而言,文档可能分散在各个节点上,那么在分布式的情况下,如何搜索文档呢?

2)elasticsearch全文搜索搜索分为2个阶段,搜索(query)+取回(fetch)。

在这里插入图片描述

2、搜索(query)查询阶段包含以下三步:

1)客户端发送一个search(搜索)请求给Node 3, Node3创建了一个长度为from+size的空优先级队

2)Node 3 转发这个搜索请求到索引中每个分片的原本或副本。每个分片在本地执行这个查询并且结果将结果到
一个大小为 from+size的有序本地优先队列里去。

3)每个分片返回document的ID和它优先队列里的所有document的排序值给协调节点Node 3。Node3把这些值合并到自己的优先队列里产生全局排序结果。

3、取回(fetch)

在这里插入图片描述

4、取回(fetch)分发阶段由以下步骤构成:

1)协调节点辨别出哪个document需要取回,并且向相关分片发出GET请求。

2)每个分片加载documlenit并且根据需要丰富(enrich)它们,然后再将document返回协调节点。

3)一旦所有的document都被取回,协调节点会将结果返回给客户端。

三、Elasticsearch的Java客户端之介绍以及构造数据

1、Elasticsearch的Java客户端

在Elasticsearch中,为java提供了2种客户端,一种是RIEST风格的客户端,另一种是Java API的客户端。

https://www.elastic.co/guide/en/elasticsearch/client/index.html

2、REST 客户端

Elasticsearch 提供了2种REST客户端:一种是低级客户端,一种是高级客户端。

1)Java Low Level REST Client:

官方提供的低级客户端。该客户端通过http来连接Elasticsearch集群。用户在使用该客户端时需要将请求数据手动拼接成Elasticsearch所需JSON格式进行发送,收到响应时同样也需要将返回的JSON数据手动封装成对象。虽然麻烦,不过该客户端兼容所有的Elasticsearch版本。

2)Java High LevelREST Client:

官方提供的高级客户端。该客户端基于低级客户端实现,它提供了很多便捷的
API来解决低级客户端需要手动转换数据格式的问题。

3、Elasticsearch 构造数据 实操 示例

1)打开谷歌浏览器(安装有es-head插件),连接elasticsearch服务器。并创建索引 haoke。分片数为5,副本数为1。

在这里插入图片描述

2)打开 Postman 软件,选择POST请求,

3)地址栏输入:如:http://192.168.196.119:9200/haoke/house/_bulk

4)请求体为 JSON 数据类型,请求内容为以下(注意最后有一空行):

#POST http://192.168.196.119:9200/haoke/house/_bulk{"index":{"_index":"haoke","_type":"house"}}
{"id":"1001","title":"整租 · 南丹大楼1居室7500","price":"7500"}
{"index":{"_index":"haoke","_type":"house"}}
{"id":"1002","title":"陆家嘴板块,精装设计一室一厅,可拎包入住诚意租。","price":"8500"}
{"index":{"_index":"haoke","_type":"house"}}
{"id":"1003","title":"整租·健安坊 1居室4050","price":"7500"}
{"index":{"_index":"haoke","_type":"house"}}
{"id":"1004","title":"整租·中凯城市之光+视野开阔+景色秀丽+拎包入住","price":"6500"}
{"index":{"_index":"haoke","_type":"house"}}
{"id":"1005","title":"整租 · 南京西路品质小区21213三轨交汇 配套齐*拎包入住","price":"6000"}
{"index":{"_index":"haoke","_type":"house"}}
{"id":"1006","title":"祥康里 简约风格*南户型 拎包入住 看房随时","price":"7000"}

5)响应数据如下:

{"took": 3271,"errors": false,"items": [{"index": {"_index": "haoke","_type": "house","_id": "2PX_PpYBbZPp9TaeL7Eq","_version": 1,"result": "created","_shards": {"total": 2,"successful": 2,"failed": 0},"_seq_no": 0,"_primary_term": 1,"status": 201}},{"index": {"_index": "haoke","_type": "house","_id": "2fX_PpYBbZPp9TaeL7Eq","_version": 1,"result": "created","_shards": {"total": 2,"successful": 2,"failed": 0},"_seq_no": 0,"_primary_term": 1,"status": 201}},{"index": {"_index": "haoke","_type": "house","_id": "2vX_PpYBbZPp9TaeL7Er","_version": 1,"result": "created","_shards": {"total": 2,"successful": 2,"failed": 0},"_seq_no": 0,"_primary_term": 1,"status": 201}},{"index": {"_index": "haoke","_type": "house","_id": "2_X_PpYBbZPp9TaeL7Er","_version": 1,"result": "created","_shards": {"total": 2,"successful": 2,"failed": 0},"_seq_no": 0,"_primary_term": 1,"status": 201}},{"index": {"_index": "haoke","_type": "house","_id": "3PX_PpYBbZPp9TaeL7Er","_version": 1,"result": "created","_shards": {"total": 2,"successful": 2,"failed": 0},"_seq_no": 1,"_primary_term": 1,"status": 201}},{"index": {"_index": "haoke","_type"

相关文章:

  • 【图像变换】pytorch-CycleGAN-and-pix2pix的学习笔记
  • Linux系统编程 day7、8 信号(周日划水了)
  • LangChain + 文档处理:构建智能文档问答系统 RAG 的实战指南
  • Hyperlane:Rust Web框架的性能新标杆
  • 超详细mac上用nvm安装node环境,配置npm
  • 智慧能源安全新纪元:当能源监测遇上视频联网的无限可能
  • kafka监控kafka manager(CMAK)部署配置
  • Moritex大靶面远心镜头 助力晶圆外观检测
  • 榕壹云预约咨询系统:基于ThinkPHP+MySQL+UniApp打造的灵活预约小程序解决方案
  • 【日志体系】ELK Stack与云原生日志服务
  • 【计算机视觉】CV实战项目- CMU目标检测与跟踪系统 Object Detection Tracking for Surveillance Video
  • 24. git revert
  • Spring(第一章)
  • 11-DevOps-Jenkins Pipeline流水线作业
  • 剑指offer经典题目(五)
  • ORION:通过视觉-语言指令动作生成的一个整体端到端自动驾驶框架
  • WPF的发展历程
  • 人类行为的原动力是自我保存-来自ChatGPT
  • 分布式数据库TiDB:架构、核心特性与生产实践(分库分表)
  • 纷析云开源财务软件:助力企业实现数字化自主权
  • 62岁中国国际商会副会长、康力电梯创始人王友林逝世
  • 外媒:罗马教皇方济各去世
  • 中方决定对在涉港问题上表现恶劣的美国国会议员等实施制裁
  • 分离19年后:陈杨梅首度露面,父亲亲手喂棉花糖给女儿吃
  • 人民日报头版开新栏:收官之年干劲满,决战决胜勇争先
  • 因在罗博特科并购项目中执业违规,东方证券、国浩所均遭警示