目录

一、Elasticsearch(ES)介绍

1.为什么需要单独的搜索服务

2.全文检索

3.Elasticsearch简介

1.Elasticsearch的特点

2.应用场景

3.ElasticSearch数据的存储和搜索原理

二、Elasticsearch(ES)安装 

1、拉取镜像

2、创建目录并给目录赋权

 3、创建并编辑配置文件

4、 开放防火墙端口9200、9300

5、开放服务器端口

6、启动ES

三、安装Kibana

1、准备工作

2、创建配置和脚本

3、服务器放端口访问

四、安装ik分词器

1、安装包解压和删除安装包

 2、重启es

3、 测试ik分词库是否成功


一、Elasticsearch(ES)介绍

1.为什么需要单独的搜索服务

  • 用户访问我们的首页,一般都会直接搜索来寻找自己想要购买的商品。

  • 而商品的数量非常多,而且分类繁杂。如何能正确的显示出用户想要的商品,并进行合理的过滤,尽快促成交易,是搜索系统要研究的核心。

  • 面对这样复杂的搜索业务和数据量,使用传统数据库搜索就显得力不从心,一般我们都会使用全文检索技术Elasticsearch。

2.全文检索

全文检索:类似于百度、google等搜索引擎,输入一个内容,可以很快速的搜索出和内容相关的其他内容,速度快,性能高,查询范围大。

检索及搜索及查询

数据库查询

数据库查询其实就是使用select * from xxx 查询数据库数据。

数据库查询问题

问题1

问题2

通过上述的案例,我们知道使用数据库查询数据存在性能低、功能弱等问题,在大数据量的情况下,这些问题将制约搜索操作,而这些问题可以使用倒排索引来解决这些问题,从而提高搜索效率。

倒排索引

例如:

静夜思

床前明月光,疑是地上霜。 举头望明月,低头思故乡。

水调歌头

明月几时有?把酒问青天。不知天上宫阙,今夕是何年。我欲乘风归去,又恐琼楼玉宇,高处不胜寒。起舞弄清影,何似在人间。转朱阁,低绮户,照无眠。不应有恨,何事长向别时圆?人有悲欢离合,月有阴晴圆缺,此事古难全。但愿人长久,千里共婵娟。”

使用倒排索引操作

但是使用倒排索引,value的内容将会非常的多,所以可以对其进行优化,在value中存储内容的唯一标识即可。

倒排索引:将各个文档中的内容,进行分词,形成词条。然后记录词条和数据的唯一标识(id)的对应关系,形成的产物,查询时可以根据分好的词查询到对应数据的唯一标识,然后查询到数据。

3.Elasticsearch简介

官网:Elastic — 搜索 AI 公司 | Elastic

Elasticsearch是一个基于Lucene的搜索服务器引擎(软件)。它提供了一个分布式多用户能力的全文搜索引擎(软件),基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎(软件)。类似的还有solr。

Elastic有一条完整的产品线及解决方案:Elasticsearch、Kibana、Logstash等,前面说的三个就是大家常说的ELK(日志分析)技术栈。(现在称之为Elastic Stack:ELK Stack:Elasticsearch、Kibana、Beats 和 Logstash | Elastic)

1.Elasticsearch的特点

  • 分布式,无需人工搭建集群(天生就是集群的)(solr就需要人为配置,使用Zookeeper作为注册中心)

  • Restful风格,一切API都遵循Rest原则,容易上手

  • 近实时搜索,数据更新在Elasticsearch中几乎是完全同步的。(但还是不同步的)

2.应用场景

  • 搜索:海量数据的查询

  • 日志数据分析

  • 实时数据分析

扩展:solr和Elasticsearch的区别:

  • es基本是开箱即用,非常简单。Solr安装略微复杂一丢丢

  • Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能。

  • Solr 支持更多格式的数据,比如JSON、XML、CSV,而 Elasticsearch 仅支持json文件格式。

  • Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供,例如图形化界面需要kibana友好支撑

  • Solr 查询快,但更新索引时慢(即插入删除慢),用于电商等查询多的应用;

    ES建立索引慢,即实时性查询快,用于facebook、新浪等搜索。

    Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。

  • Solr比较成熟,有一个更大,更成熟的用户、开发和贡献者社区,而 Elasticsearch相对开发维护者较少,更新太快,学习使用成本较高。

Elasticsearch和Mysql的分工:

Elasticsearch:主要负责大数据量的查操作。

Mysql:主要负责增、删、改、少量数据的查操作。

3.ElasticSearch数据的存储和搜索原理

数据存储原理

搜索原理

Elasticsearch是一个开源的分布式搜索和分析引擎,用于存储、检索和分析海量数据。下面是Elasticsearch版本5、6和7之间的主要区别:

  1. 功能增强:每个新的Elasticsearch版本都引入了新的功能和改进。例如,Elasticsearch 6引入了一种新的分布式均衡策略,以提高集群的性能和稳定性。Elasticsearch 7引入了Elasticsearch警报和报告功能,还改进了安全性功能。

  2. 性能优化:随着每个版本的发布,Elasticsearch致力于改进性能和吞吐量。例如,Elasticsearch 5引入了更好的字段数据类型和聚合性能,Elasticsearch 6引入了更高效的搜索和索引算法,而Elasticsearch 7进一步提升了性能,并改进了索引和搜索速度。

  3. 安全性增强:Elasticsearch在每个版本中都加强了安全性。例如,Elasticsearch 5引入了内置的X-Pack安全功能,用于身份验证和访问控制。Elasticsearch 6引入了TLS加密和重要配置更改,Elasticsearch 7引入了更强大的角色和权限管理。

  4. API更改:每个版本中的Elasticsearch API可能会有一些细微的更改或调整。这可能需要更新现有的应用程序代码以适应新的API。因此,在升级Elasticsearch版本时,需要仔细阅读版本发布说明和文档,以了解API的变更情况。

  5. 兼容性:由于不同版本之间的API和功能变化,升级Elasticsearch版本可能需要进行一些工作。尤其是从较旧的版本升级到较新的版本时,需要进行彻底的测试和计划。

总的来说,随着每个新版本的发布,Elasticsearch不断改进其功能、性能和安全性。因此,了解每个版本的变化对于确定升级策略和利用新功能非常重要。在进行升级之前,建议查阅Elasticsearch的官方文档,并根据特定的用例和需求评估哪个版本最适合你的环境。

二、Elasticsearch(ES)安装 

1、拉取镜像

docker pull elasticsearch:7.4.0

查看镜像

2、创建目录并给目录赋权

 3、创建并编辑配置文件

elasticsearch.yml

 写入以下内容

#可访问IP
http.host: 0.0.0.0
# 跨域
http.cors.enabled: true
http.cors.allow-origin: "*"

 startEs.sh

写入以下内容 

 docker run --name es-7.4.0 \
--restart=always \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms84m -Xmx256m" \
-v /usr/local/docker/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /usr/local/docker/es/data:/usr/share/elasticsearch/data \
-v /usr/local/docker/es/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.0

 给配置文件赋权

4、 开放防火墙端口9200、9300

5、开放服务器端口

6、启动ES

 

三、安装Kibana

1、准备工作

(1).打开指定目录
cd /usr/local/docker/
(2).创建Kibana目录
mkdir kibana
(3).进入Kibana目录
cd kibana/
(4).创建config挂载目录
mkdir config
(5)进入config目录
cd config/

2、创建配置和脚本

创建配置
(1).创建文件
vim kibana.yml
(2).编写配置
# 主机地址,可以是ip,主机名
server.host: 0.0.0.0
# 提供服务的端口,监听端口
server.port: 5601
# kibana访问es服务器的URL,就可以有多个,以逗号","隔开
elasticsearch.hosts: [ "http://服务器ip:9200" ]
创建脚本
(1).返回config目录
cd ../
(2).创建脚本文件
vim startKibana.sh
(3).添加脚本内容
docker run -d \
  --name kibana-7.4.0 \
  --restart=always \
  -p 5601:5601 \
  -e TZ="Asia/Shanghai" \
  -v /usr/local/docker/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml \
  kibana:7.4.0
(4).脚本赋权
chmod -R 700 startKibana.sh
(5).启动脚本
./startKibana.sh
(6).使用命令查询
docker ps

3、服务器放端口访问

5601

 

四、安装ik分词器

1、安装包解压和删除安装包

 

安装解压工具

 

 解压缩zip文件

删除zip安装包

 2、重启es

查看是否重启成功

3、 测试ik分词库是否成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/90177.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/90177.shtml
英文地址,请注明出处:http://en.pswp.cn/web/90177.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html结构解析

<!DOCTYPE html>&#xff1a;声明为 HTML5 文档 <html lang"zh-CN">&#xff1a;根元素&#xff0c;指定页面语言为中文 <meta charset"UTF-8">&#xff1a;设置字符编码&#xff0c;确保中文正常显示 <meta name"viewport"…

面试150 最大子数组和

思路 贪心法&#xff1a;设定最小标志result为float(‘-inf’),遍历一次数组元素进行求和&#xff0c;如果当前元素大于result&#xff0c;则更新result的值&#xff0c;如果sum小于0&#xff0c;则重新置0进行计算&#xff0c;最后返回result class Solution:def maxSubArray(…

MyBatis动态SQL实战:告别硬编码,拥抱智能SQL生成

MyBatis动态SQL实战&#xff1a;告别硬编码&#xff0c;拥抱智能SQL生成在电商平台的用户管理模块中&#xff0c;需要面对多种不同的用户查询组合条件。当使用传统的硬编码SQL方式时&#xff0c;代码膨胀到了2000多行&#xff0c;维护成本极高。而引入MyBatis动态SQL后&#xf…

Web前端开发:JavaScript遍历方法详解与对比

1. 传统 for 循环const arr [10, 20, 30]; for (let i 0; i < arr.length; i) {console.log(索引 ${i}: 值 ${arr[i]}); } // 输出&#xff1a; // 索引 0: 值 10 // 索引 1: 值 20 // 索引 2: 值 30特点&#xff1a;最基础的循环&#xff0c;可通过索引精准控制适用场景&…

Python 爬虫(一):爬虫伪装

目录 1 简介2 伪装策略 2.1 Request Headers 问题2.2 IP 限制问题 3 总结 1 简介 对于一些有一定规模或盈利性质比较强的网站&#xff0c;几乎都会做一些防爬措施&#xff0c;防爬措施一般来说有两种&#xff1a;一种是做身份验证&#xff0c;直接把虫子挡在了门口&#xff…

TODAY()-WEEKDAY(TODAY(),2)+1

这个Excel公式 TODAY()-WEEKDAY(TODAY(),2)1 用于计算 当前周的周一日期。下面详细解释它的逻辑和用法&#xff1a;公式解析TODAY()返回当前日期&#xff08;例如今天是2023年12月20日&#xff0c;则 TODAY() 2023/12/20&#xff09;。WEEKDAY(TODAY(), 2)计算当前日期是星期几…

Fast Frequency Estimation Algorithm by Least Squares Phase Unwrapping

I. 引言 单个含噪正弦信号的频率估计是一个研究已久的问题&#xff0c;并有多种应用[1]。在高斯白噪声假设下&#xff0c;最大似然(ML)频率估计器是Rife和Boorstyn [2]中提出的周期图估计器&#xff0c;其中傅里叶变换用于搜索周期图的最大值。周期图估计器被广泛认为是单频估计…

C语言常见的预定符号常量

C语言常见的预定符号常量C 语言提供了丰富的预定义符号常量&#xff0c;分布在不同头文件中&#xff0c;用于获取编译信息、数值范围、浮点特性等关键信息。以下是常见预定义符号常量的分类总结&#xff1a;一、预定义宏&#xff08;编译时信息&#xff09;由编译器自动定义&am…

【2025】使用vue构建一个漂亮的天气卡片

1. 核心框架&#xff1a;Vue Vue 以其轻量、易用、响应式数据绑定的特点&#xff0c;非常适合快速构建这类小型界面组件。即使是直接通过 CDN 引入&#xff0c;也能高效开发&#xff0c;降低项目复杂度&#xff0c;无需搭建完整工程化环境 。 2. 网络请求&#xff1a;Axios 用于…

Ruby 命令行选项详解

Ruby 命令行选项详解 引言 Ruby 是一种广泛使用的编程语言,它以其简洁、优雅和强大的功能而闻名。在 Ruby 的使用过程中,命令行界面(CLI)提供了丰富的选项,可以帮助开发者更高效地与 Ruby 环境交互。本文将详细解析 Ruby 命令行选项,旨在帮助开发者更好地利用这些工具。…

NLP复习

1.文本预处理 分词,词性标注,命名实体识别 1.1分词:jieba jieba.lcut(content,cut_alltrue) 全模式 jieba.lcut(content,cut_allfalse) 精确模式 jieba.lcut_for_search(content) 搜索引擎模式 lcut和cut的区别:cut返回的是一个生成器Generator,lcut返回的是列表 生成器调…

WEB :实战演练——从零实现一个交互轮播图(附源码)

文章目录 一、轮播图整体功能规划二、HTML结构深度解析三、CSS样式实现细节1. 定位系统详解2. 显示/隐藏机制3. 按钮交互效果实现4. 纯CSS箭头实现5. 指示器&#xff1a;当前位置可视化 四、JavaScript逻辑深入解析1. 核心变量与DOM获取2. 图片切换函数&#xff08;核心逻辑&am…

MCP 协议详细分析一 initialize ping tools/list tools/call

MCP 协议详细分析一 &#xff08;initialize ping tools/list tools/call) 本节基于 实现一个 java 的mcp client 调用的 一个python 的mcp server 的日志&#xff0c;完整展示一次典型的 MCP Java SDK 通信流程、工具调用、通知机制与日志记录&#xff0c;仅包含 echo-simple…

SLAM学习资料记录

ORB_SLAM2 创建自己的数据集&#xff08;还未使用&#xff09; 【SLAM实战篇】Ubuntu 20.04版本&#xff08;OpenCV版本4.5.3&#xff09;对于ORB-SLAM2安装运行&#xff0c;代码编译&#xff0c;自己的数据集构造_ubuntu20.04 安装运行orb_slam2算法-CSDN博客 卡尔曼滤波数据…

用Phi-3 Mini微调实现英文到尤达语翻译

用Phi-3 Mini微调实现英文到尤达语翻译 引言 本文将带你快速上手大模型微调实践——以微软的Phi-3 Mini 4K Instruct模型为例&#xff0c;教你如何将其微调为一个能把英文翻译成"尤达语"&#xff08;《星球大战》中尤达大师的独特说话风格&#xff09;的模型。这是一…

AI助力,轻松实现人声分离伴奏提取

亲爱的小伙伴们&#xff01;前段时间&#xff0c;有一位同事家的可爱小孩参加了一场英语演讲比赛。同事找到我&#xff0c;希望我能帮个忙&#xff0c;把讲视频中的人声去掉&#xff0c;只提取出其中相应的伴奏。今天&#xff0c;我就来和大家分享一下究竟如何实现从 MP4 视频中…

第1章第2章笔记

OSI参考模型---开放式系统互联模型---OSI/RM ISO--->国际标准化组织&#xff1b;特点&#xff1a;先有模型&#xff0c;在又协议。 OSI七层参考模型&#xff1a;应用层 --- 提供网络服务&#xff1b;自然语言-->编码表示层 --- 对数据的处理&#xff1b;格式化&#xff0…

图的BFS和DFS

一&#xff0c;图的遍历逻辑1.之前我们学了图的存储&#xff0c;可以邻接表存和邻接矩阵存。现在我们要学习图的遍历操作和树类似可以分为深度遍历和广度遍历&#xff0c;而深度遍历也是用递归实现&#xff0c;广度遍历是用队列实现2.深度遍历(DFS)a.确定起点b.找到一条边按顺时…

WWDC 25 给自定义 SwiftUI 视图穿上“玻璃外衣”:最新 Liquid Glass 皮肤详解

引子 各位 iOS 足球体育健儿们&#xff0c;且听我一言&#xff01;想当年在《少林足球》里&#xff0c;阿星一句“做人如果没梦想&#xff0c;那跟咸鱼有什么分别啊&#xff1f;”点燃了多少人的江湖梦。 如今在 SwiftUI 江湖里&#xff0c;Apple 于 WWDC 25 推出的 Liquid Gl…

Day01_C++

01.思维导图02.方法一&#xff1a;#include <iostream> #include <cstring> #include <iostream> using namespace std; class mystring { private:char* buf;int len;public:mystring(const char* str);void copy(const char* ptr);void copy(mystring ptr)…