ES概念和安装使用及中文分词器(Windows)

本文对比分析了Elasticsearch(ES)与Solr两大搜索引擎的特点与应用场景,详细介绍了ES的安装配置过程及常见问题解决方法,包括Kibana配置、SSL连接、安全设置等,并探讨了两者在实时搜索和传统搜索方面的优劣。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备

介绍一下本机实验环境:

jdk 8 安装(java语言开发),无关紧要;

node.js安装 -> npm -v安装,之前安装过:参考VUE脚手架:VUE的路由使用说明和基于Hbuilder-x的环境部署及相关问题解决方案



前言

Solr(读作“solar”)是Apache Lucene项目的开源企业搜索平台。Lucene只是一个框架。Solr在传统搜索中优于ES,其支持格式更多,功能更多,毕竟一个2004年一个2010诞生的。但是在实时建立索引的时候,solr会产生IO阻塞,故而ES更适合实时查询,能达到准实时搜索。

ES:分关系型数据库。Elasticsearch和MongoDB/Redis/Memcache一样,是非关系型数据库。ES7自带JDK11所以不用担心jdk。

使用搜索引擎的原因:数据的SQL模糊查询:like %太慢。想起之前在校学数据结构用KMP算法模糊查询,留下泪水。

ELK:Elasticsearch是个开源分布式搜索引擎 + Logstash日志采集 + Kibana提供Web管理界面;



安装

官网安装入门步骤

es本体下载

安装Kibana下载


kibana启动失败

在这里插入图片描述


报错

 log   [03:49:45.930] [error][data][elasticsearch] [TimeoutError]: Request timed out
  log   [03:49:45.979] [error][savedobjects-service] `Unable to retrieve` version information from Elasticsearch nodes.



 log   [03:47:45.453] [warning][actions][actions][plugins] APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set `xpack.encryptedSavedObjects.encryptionKey` in kibana.yml.
  log   [03:47:45.479] [warning][alerting][alerts][plugins][plugins] APIs are disabled due to the Encrypted Saved Objects plugin using an ephemeral encryption key. Please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml.

连接ES无误

在这里插入图片描述

在这里插入图片描述


追加ssl配置

在这里插入图片描述


访问kabana

Kibana

在这里插入图片描述


在这里插入图片描述


查询语法

Lucene查询语法汇总

ES基于Lucene(配置繁杂,必须要用java开发,且不支持集群环境,索引库和应用所在同一个服务器,共同占用硬盘)。上述Lucene的缺点和问题,ES都能解决。



设置密码

1、在es安装的config目录下编辑elasticsearch.yml:

# ---------------------------------- Authority -----------------------------------
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true


2、在es安装的bin目录下通过cmd执行elasticsearch-service.bat文件:逐个输入对应密码;


3、可以在kabana的配置文件kabana.yml中添加如下:

elasticsearch.username: "elastic"
elasticsearch.password: "root123456"


ES和Solr

Solr:当单纯的对已有数据进行搜索时,Solr更快。

ES Advantage:当实时建立索引时,Solr会产生io阻塞,查询性能较差,ElasticSearch具有明显的优势。


ES VS 关系型数据库(DB)

关系型数据库Database(数据库)Table(表)Row(行)Column(列)
ElasticSearchIndex(索引库)Type(类型,7之后被删除了,跟后面的Type不是一个概念)Document(文档)Field(字段)

分布式管理

Solr使用ZK进行管理,而ES自身带有分布式协调管理功能;

Solr支持更多格式的数据:比如:JSON、XML、CSV,而ES仅支持Json文件格式;

Solr在传统的搜索应用中表现好于ElasticSearch,但在处理实时搜索应用时效率明显低于ElasticSearch。


Lucene全文检索框架

通过一个程序扫描文本中的每一个单词,针对单词建立索引,并保存单词在文本中的位置,以及出现的次数。

用户查询时,通过之前建立好的索引来查询,将索引中的单词对应的文本位置,出现的次数返回给用户,因为有了具体文本的位置,所以就可以将具体内容取出来了。


倒排索引

正排索引:以ID去找关键词。这样子效率太低,且互联网不可计数的数据量不适用。

分词 -> 去重 -> 倒排索引;

去重的过程中,获得单词的出现的文本id;

以关键词作为索引,去找id。这就是倒排索引


所以,搜索引擎会将正向索引重新构建为倒排索引,即把文件ID对应到关键词的映射转换为关键词到文件ID的映射,每个关键词都对应着一系列的文件,这些文件中都出现这个关键词。

​ 得到倒排索引的结构如下:

​ “关键词1”:“文档1”的ID,“文档2”的ID,…………。

​ “关键词2”:带有此关键词的文档ID列表。

在这里插入图片描述

注意

Linux安装ES不能用root来建立,需要普通用户。



IK分词器

默认的英文分词器不适合中文:被分成一个个字。所以用IK分词器。

IK分词器的使用:

https://github.com/medcl/elasticsearch-analysis-ik/releases找到与自己的ES相同的版本。

在这里插入图片描述


第二步:解压到ES的plugins目录下,命名我IK。

在这里插入图片描述


重新启动es:发现起不来,查看日志:

[2021-03-16T10:16:06,065][ERROR][o.e.b.Bootstrap ] [DESKTOP-S3SN16R] Exception
java.lang.IllegalStateException: Could not load plugin descriptor for plugin directory [elasticsearch-analysis-ik-7.10.2.zip]
at org.elasticsearch.plugins.PluginsService.readPluginBundle(PluginsService.java:407) ~[elasticsearch-7.10.2.jar:7.10.2]

把plugins里面的zip包给删除。


第一次使用

点击面板中的“Dev Tools”按钮,进入 Dev 工具,开始我们的 Elasticsearch初次访问之旅。

http://localhost:5601/app/kibana#/dev_tools/console?_g=()

在这里插入图片描述


注意:_analyze是保留方法,其analyer填写分词器类型。

GET _search
{
  "query": {
    "match_all": {}
  }
}

POST _analyze
{
  "analyzer": "ik_smart",
  "text": "我不害怕明天,因为我经历过昨天,又热爱今天。"
}

POST _analyze
{
  "analyzer": "standard",
  "text": "I am not afraid of tomorrow for I have seen yesterday and love today. "
}



中英文分词情况

英文使用默认分词器(standard)->中文使用默认分词器(standard)->中文IK分词器(ik_smart)。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长臂人猿

客官们众筹请博主喝杯奶茶吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值