您现在的位置是:首页 > 编程 > 

Elasticsearch 搜索入门技术之一

2025-07-29 09:22:01
Elasticsearch 搜索入门技术之一 1,课程回顾 2,本章重点 什么是全文检索,常用全文检索框架的基本原理是什么 es是什么,主要使用场景 es分布式搜索引擎集的搭建,具体内容 .1 全文检索 .1.1 数据分类 我们生活中的数据总体分为三种:结构化数据,非结构化数据,半结构化数据 结构化数据:指具有固定格式或有限长度的数据,如数据库(mysql oracle …)

Elasticsearch 搜索入门技术之一

1,课程回顾 2,本章重点 什么是全文检索,常用全文检索框架的基本原理是什么 es是什么,主要使用场景 es分布式搜索引擎集的搭建

,具体内容 .1 全文检索 .1.1 数据分类 我们生活中的数据总体分为三种:结构化数据,非结构化数据,半结构化数据 结构化数据:指具有固定格式或有限长度的数据,如数据库(mysql oracle …),元数据等。 非结构化数据:指不定长或无固定格式的数据,如邮件,word文档等 半结构化数据,如XML,HTML等 非结构化数据又一种叫法叫全文数据。

对结构化数据的搜索:如对数据库的搜索,用SQL语句。 对元数据的搜索,如利用windows搜索对文件名,类型,修改时间进行搜索等。 对非结构化数据的搜索:如利用windows的搜索也可以搜索文件内容,Linux下的grep命令,再如用Google和百度可以搜索大量内容数据。

.1.2 非结构化数据搜索方法

顺序扫描: 比如要内容包含某一个字符串的文件,就是一个文档一个文档的看,对于每一个文档,从头看到尾,如果此文档包含此字符串,则此文档为我们要的文件,接着看下一个文件,直到扫描完所有的文件。 如利用windows的搜索也可以搜索文件内容,只是相当的慢。如果你有一个500G硬盘,如果想在上面到一个内容包含某字符串的文件,不花他几个小时,怕是做不到。Linux下的grep命令也是这一种方式。大家可能觉得这种方法比较原始,但对于小数据量的文件,这种方法还是最直接,最方便的。但是对于大量的文件,这种方法就很慢了。

全文检索( 倒排索引es的核心):将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。

这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引。

这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)。

代码语言:javascript代码运行次数:0运行复制
  倒排索引源于实际应用中需要根据属性的值来查记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。(实际参考es中文档)

.2 什么是 Elasticsearch? : ​​​ /​​

代码语言:javascript代码运行次数:0运行复制
 Elasticsearch 是一个分布式的开源搜索和分析引擎,适用于所有类型的数据,包括文本、数字、地理空间、结构化和非结构化数据。Elasticsearch 在 Apache Lucene 的基础上开发而成,由 Elasticsearch .V.(即现在的 Elastic)于 2010 年首次发布。Elasticsearch 以其简单的 REST 风格 API、分布式特性、速度和可扩展性而闻名,是 Elastic Stack 的核心组件;Elastic Stack 是适用于数据采集、充实、存储、分析和可视化的一组开源工具。人们通常将 Elastic Stack 称为 ELK Stack(代指 Elasticsearch、Logstash 和 Kibana),目前 Elastic Stack 包括一系列丰富的轻量型数据采集代理,这些代理统称为 Beats,可用来向 Elasticsearch 发送数据。

. 用途: Elasticsearch 在速度和可扩展性方面都表现出,而且还能够索引多种类型的内容,这意味着其可用于多种用例: 应用程序搜索 网站搜索 企业搜索 日志处理和分析 基础设施指标和容器监测 应用程序性能监测 地理空间数据分析和可视化 安全分析 业务分析 .4 基本概念: ​​​ .0/_basic_concepts.html​​​ 近实时 near realtime(nrt) Elasticsearch是一个几乎实时的搜索平台。意思是,从索引一个文档到这个文档可被搜索只需要一点点的延迟,这个时间一般为毫秒级。 cluster 集 集是一个或多个节点(服务器)的集合, 这些节点共同保存整个数据,并在所有节点上提供联合索引和搜索功能。一个集由一个唯一集ID确定,并指定一个集名(默认为“elasticsearch”)。该集名非常重要,因为节点可以通过这个集名加入集,一个节点只能是集的一部分。 node 节点 节点是单个服务器实例,它是集的一部分,可以存储数据,并参与集的索引和搜索功能。就像一个集,节点的名称默认为一个随机的通用唯一标识符(UUID),确定在启动时分配给该节点。如果不希望默认,可以定义任何节点名。 index 索引 索引是具有相似特性的文档集合。例如,可以为客户数据提供索引,为产品目录建立另一个索引,以及为订单数据建立另一个索引。索引由名称(必须全部为小写)标识,该名称用于在对其中的文档执行索引、搜索、更新和删除操作时引用索引。就像关系数据库中的“数据库”。它有一个定义多种类型的映射。索引是逻辑名称空间,映射到一个或多个主分片,并且可以有零个或多个副本分片。 document 文档 文档是可以被索引的信息的基本单位。也是全文搜索中被搜索的对象,可以对应一个网页,一篇txt文档或者一个商品。 相当于关系型数据库中的表中的一行记录。例如,您可以为单个客户提供一个文档,单个产品提供另一个文档,以及单个订单提供另一个文档。es本文件的表示形式为JSO(JavaScript Object otation)格式,这是一种非常普遍的互联网数据交换格式。似于关系数据库中的一行。 文档和索引的关系原理讲解: 文档(txt,doc,docx…): 1, 人生永远不可能复制,要珍惜每一份缘分 2, 珍惜人生的每次相遇,就是缘分 , 人生中存在很多相遇和离别,都是缘分中的注定 提取关键字(.html使用中文分词技术 排除停用词.html) 1, 人生 永远 复制 珍惜 缘分 2, 珍惜 人生 相遇 缘分 , 人生 存在 相遇 离别 缘分 注定 创建索引 人生 -> 1,2, 永远 -> 1 复制 1 珍惜 1,2 缘分 1,

代码语言:javascript代码运行次数:0运行复制
     。。。。

倒排索引又叫反向索引(右下图)以字或词为文档中出现的位置情况。
  
    shards   replicas 碎片和副本 
shards:分片数,一个索引分几个片存储,多个分片可以提升读写速度。索引可以存储大量的数据,这些数据可能(分片解决)超过单个节点的硬件限制。例如,十亿个文件占用磁盘空间1TB的单指标可能不适合对单个节点的磁盘或可能太慢服务仅从单个节点的搜索请求。
replicas:
   副本数量,分多个副本存储索引,好处是防止一个节点挂掉,数据丢失(防止单点故障)。
   它在碎片/节点出现故障时提供高可用性(提高可用性)。
   它允许您扩展搜索量/吞吐量,因为可以在所有副本上并行执行搜索(提高搜索速度)。

.5 下载配置,搭建集:

​​.4.gz​​​ 或者: wget .4.gz 集规划: es1 192.168.2.71 es2 192.168.2.72 es 192.168.2.7 解压: tar -zxvf elasticsearch-6.4.gz -C /usr/ 修改名称 mv /usr/elasticsearch-6.4.0/ /usr/elasticsearch/ 配置环境变量: vim /etc/porfile 添加配置 export ES_HOME=/usr/elasticsearch 修改配置: PATH=$ES_HOME/bin 让配置生效: source /etc/profile es配置: 1,在/usr/elasticsearch创建数据data,后面配置用到: mkdir /usr/elasticsearch/data 2,在/etc/最后添加(解决:max virtual memory areas _map_count [6550] is too low错误,_map_count单个JVM能开启的最大线程数) vim /etc/ _map_count=65560 让文件生效: sysctl -p ,在/etc/security/最后添加:(不配置缺省值:1024,解除 Linux 系统的最大进程数和最大文件打开数限制:* 代表针对所有用户 ues表示启动用户名称,与下面创建用户一致 noproc 是代表最大进程数 nofile 是代表最大文件打开数 ) vim /etc/security/ ues soft nofile 6556 ues hard nofile 11072 ues soft nproc 4096 ues hard nproc 4096 4,修改节点的配置文件 vim /usr/elasticsearch/config/ (22行) -Xms512m -Xmx512m 原则: 最小堆的大小和最大堆的大小应该相等。 Elasticsearch可获得越多的堆,并且内存也可以使用更多的缓存。但是需要注意,分配了太多的堆给你的项目,将会导致有长时间的垃圾搜集停留。 设置最大堆的值不能超过你物理内存的50%,要确保有足够多的物理内存来保证内核文件缓存。

5,修改配置文件 ElasticSearch.yml vim /usr/elasticsearch/config/elasticsearch.yml # ======================== Elasticsearch Configuration =========================

OTE: Elasticsearch comes with reasonable defaults for most settings.Before you set out to tweak and tune the configuration, make sure youunderstand what are you trying to accomplish and the cequences.The primary way of configuring a node is via this file. This template liststhe most important settings you may want to configure for a production cluster.Please cult the documentation for further information on configuration opti:​​.html​​---------------------------------- Cluster -----------------------------------Use a descriptive name for your cluster:17行

: my-app

------------------------------------ ode ------------------------------------Use a descriptive name for the node:

#2行 : node-1

Add custom attributes to the node:

#node.attr.rack: r1

----------------------------------- Paths ------------------------------------Path to directory where to store the data (separate multiple locati by comma):

path.data: /usr/elasticsearch/data

Path to log files:7

path.logs: /usr/elasticsearch/logs

----------------------------------- Memory -----------------------------------Lock the memory on startup:

#锁定物理内存地址,防止elasticsearch内存被交换出去,也就是避免es使用swap交换分区

4 44

_lock: false #是否支持过滤掉系统调用,Elasticsearch安装各种各样的系统调用过滤依赖于操作系统(如:Linux上的seccomp)。如果成功安装与启用了系统调用过滤,将能够防御一些对Elasticsearch调用的攻击行为。要想通过此检查,你必须根据日志来修复任何阻止系统调用过滤的系统错误,或者通过配置bootstrap.system_call_filter为false来禁用系统调用过滤然后你自己做风控。 bootstrap.system_call_filter: false

Make sure that the heap size is set to about half the memory availableon the system and that the owner of the process is allowed to use thislimit.Elasticsearch performs poorly when the system is swapping the memory.---------------------------------- etwork -----------------------------------Set the bind address to a specific IP (IPv4 or IPv6):

#56 network.host: 192.168.2.0

Set a custom port for HTTP:

#60 http.port: 9200

For more information, cult the network module documentation.--------------------------------- Discovery ----------------------------------Pass an initial list of hosts to perform discovery when new node is started:The default list of hosts is [“127.0.0.1”, “[::1]”]

#当启动新节点时,通过这个ip列表进行节点发现,组建集 69 discovery.zen.ping.unicast.hosts: [“cr1”, “cr2”,“cr”]

Prevent the “split brain” by configuring the majority of nodes (total number of master-eligible nodes / 2 + 1):

#通过配置这个参数来防止集脑裂现象 (集总节点数量/2)+1 7 discovery._master_nodes: 2

For more information, cult the zen discovery module documentation.---------------------------------- Gateway -----------------------------------Block initial recovery after a full cluster restart until nodes are started:

#gateway.recover_after_nodes:

For more information, cult the gateway module documentation.---------------------------------- Various -----------------------------------Require explicit names when deleting indices:

#action.destructive_requires_name: true

因为配置文件中配置了集节点的主机名称,所以在/etc/hosts添加下面配置: vim /etc/hosts 192.168.2.21 es1 192.168.2.22 es2 192.168.2.2 es 6,由于es启动不能直接使用root用户 创建用户: useradd ues; 赋权: chown -R ues:ues /usr/elasticsearch 查看: ll /usr/ |grep elasticsearch ll /usr ll /usr/elasticsearch 复习免密: -keygen -t rsa 三次回车 -copy-id es2 yes 输入密码:tiger -copy-id es yes 输入密码:tiger 7,发送配置好的es到其他节点上: cd /usr/ 直接使用scp命令, 之前配置过免密登录 scp -r /usr/elasticsearch/ cr2:/usr/ scp -r /usr/elasticsearch/ cr:/usr/ 8,在其他节点修改配置及创建用户并赋权(当前集在cr2和cr上操作) 发送hosts: scp /etc/hosts es2:/etc/ scp /etc/hosts es:/etc/ 发送环境变量 scp /etc/profile cr2:/etc/ scp /etc/profile cr:/etc/ 发送/etc/ scp /etc/ cr2:/etc/ scp /etc/ cr:/etc/ 发送 /etc/security/ scp /etc/security/ cr2:/etc/security/ scp /etc/security/ cr:/etc/security/ 在cr2和cr上操作(或者在all session):

让文件生效: sysctl -p 让环境变量生效: source /etc/profile

代码语言:javascript代码运行次数:0运行复制
            vim /usr/elasticsearch/config/elasticsearch.yml
           分别修改2和56行
            : node-2    //cr上为
            network.host: 192.168.2.1  //cr上为2
             创建用户:
   useradd ues;

赋权: chown -R ues:ues /usr/elasticsearch 查看: ll /usr/ |grep elasticsearch

启动: 切换到ues用户 su ues; 在to All Sessi中启动: elasticsearch -d; 查看结果: curl 192.168.2.1:9200

三个IP都可以测试链接 还可以测试挂掉节点,再启动,注意,启动时速度不会快,可以看着日志 .5 常用集命令 查看集支持命令: curl 192.168.2.0:9200/_cat 查看集是否健康 curl 192.168.2.0:9200/_cat/health curl 192.168.2.0:9200/_cat/health?v 绿表示一切正常, 黄表示所有的数据可用但是部分副本还没有分配,红表示不可用 查看master: curl 192.168.2.0:9200/_cat/master?v 命令支持help: curl 192.168.2.0:9200/_cat/master?help 查看所有索引: curl 192.168.2.0:9200/_cat/indices

4,知识点总结 5,本章面试题

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2022-09-2,如有侵权请联系 cloudcommunity@tencent 删除集入门搜索索引elasticsearch

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1270476.html

相关标签:无
上传时间: 2025-07-29 01:27:07
留言与评论(共有 19 条评论)
本站网友 雪上一枝蒿
20分钟前 发表
如果你有一个500G硬盘
本站网友 张瀚元
5分钟前 发表
红表示不可用 查看master
本站网友 正明
1分钟前 发表
Elasticsearch安装各种各样的系统调用过滤依赖于操作系统(如:Linux上的seccomp)
本站网友 广东自考管理系统
14分钟前 发表
节点的名称默认为一个随机的通用唯一标识符(UUID)
本站网友 妇联电影
9分钟前 发表
通过这个ip列表进行节点发现
本站网友 lbt
22分钟前 发表
#通过配置这个参数来防止集脑裂现象 (集总节点数量/2)+1 7 discovery._master_nodes
本站网友 羟基脲
22分钟前 发表
本站网友 新天地购物公园
23分钟前 发表
bootstrap.system_call_filter
本站网友 csdn论坛
6分钟前 发表
要想通过此检查
本站网友 wap游戏
30分钟前 发表
例如
本站网友 大票
24分钟前 发表
数据丢失(防止单点故障)
本站网友 天涯时空
25分钟前 发表
/usr/ scp -r /usr/elasticsearch/ cr
本站网友 1737游戏中心
1分钟前 发表
再如用Google和百度可以搜索大量内容数据
本站网友 白内障手术
15分钟前 发表
path.data
本站网友 幼儿营养菜谱
7分钟前 发表
映射到一个或多个主分片
本站网友 天津银行待遇
1分钟前 发表
9200/_cat 查看集是否健康 curl 192.168.2.0
本站网友 找茬图片
30分钟前 发表
大家可能觉得这种方法比较原始
本站网友 悲剧的诞生
3分钟前 发表
最方便的