ElasticSearch 安装教程

ElasticSearch是基于java开发的Restful风格,依赖于jdk1.7以及以上版本,不过现在高版本的ElasticSearch都自带了jdk,所以不用关注本地jdk是否安装。

一、安装准备

1 下 载 ElasticSearch (数据库本身,类似mysql安装程序)

2 下 载 分词器ik (搜索分词器)

3 下 载 kibana (用于可视化操作,类似navicat)

1 下载ElasticSearch

下载地址: https://www.elastic.co/downloads

这个页面下拉框可以选择操作系统,默认window系统,不能选版本,默认最新版本。但最新版本9.2.0下载下来后我启动后没成功。如果需要下载历史低版本,在首页点击页面上方的【Docs】(文档)

点击View other versions(查看其他版本)

点击你需要的版本进去

点击Getting started with Elasticsearch最右边的箭头图标展开子目录,然后点击Get Elasticsearch up and running

我这边是本地window安装,所以选对应的window版本zip包进行下载

2 下载分词器

下载地址:https://release.infinilabs.com/analysis-ik/stable/

点击可直接下载下来zip包, 版本和ElasticSearch的版本保持一致

3 下载kibana

下载地址 :https://artifacts.elastic.co/downloads/kibana/kibana-7.6.2-windows-x86_64.zip

需要啥版本自行修改url 中的版本号进行下载

二、解压安装
2.1 安装和启动ElasticSearch

先把elasticsearch-7.6.2-windows-x86_64.zip 和 elasticsearch-analysis-ik-7.6.2.zip 进行解压,然后剪切elasticsearch-analysis-ik-7.6.2文件夹到elasticsearch-7.6.2的plugins文件下粘贴

然后回到elasticsearch-7.6.2/bin目录,双击elasticsearch.bat进行启动ElasticSearch数据库

启动没报错完成后, 在浏览器地址输入http://localhost:9200/ 测试是否启动成功
返回这个json说明启动成功了,访问不了说明启动失败。

2.2 启动失败处理

如果启动的黑窗口,过一会自动闪退关闭了,且http://localhost:9200/也打不开,说明没启动成功。查看log目录下的日志文件,去找原因

复制代码
org.elasticsearch.ElasticsearchException: X-Pack is not supported and Machine Learning is not available for [windows-x86]; you can use the other X-Pack features (unsupported) by setting xpack.ml.enabled: false in elasticsearch.yml

比如这个错误提示和解决方法日志里面都说了,高版本的es需要安装X-Pack 插件(作用是负责用户认证安全方面),否则就修改配置文件关闭此功能。

去安装目录的config目录下,找到 elasticsearch.yml 文件, 在里面添加一行

复制代码
xpack.ml.enabled: false

然后去重新点击 elasticsearch.bat 启动即可解决。

2.2 安装和启动kibana

先加压kibana-7.6.2-windows-x86_64.zip (用时会比较久,10w+个文件), 然后去到kibana-7.6.2-windows-x86_64/config目录,编辑kibana.yml

kibana.yml的配置项默认全部注释了,并有英文对每一个配置项目进行说明,具体配置含义参考官网说明 。 此处我们放开下面这几个即可

复制代码
server.port: 5601  # 访问端口
server.host: "localhost"  # 访问地址
server.name: "es-sever" # 服务名, 可以自行定义
elasticsearch.hosts: ["http://localhost:9200"] # elasticsearch服务器的地址 
i18n.locale: "zh-CN" # 可视化页面使用中文

回到kibana-7.6.2-windows-x86_64/bin目录,双击kibana.bat启动(一开始是黑窗口无文字,启动过程也会慢,需一两分钟)

启动完成后,在浏览器访问http://localhost:5601

点击使用我的样例数据 或者 自己浏览 即可进入主页

三、简单的查询操作

3.1 进入数据操作界面

点击左下角的 箭头图标 菜单

点击左边倒数第三个图标 Dev Tools (滚动条往下拉才能看到)

左边这块区域是写操作语句的地方,类似navicat的窗口写select * from table。ElasticSearch 是非关系型数据库, 通过api来操作数据库。

若写错了左边的数字行会有红色的叉叉提示,比如 # 注释内容 ,可以单独写一行,不能放在 GET 这一行后面,也不能放在{} 里面的任何地方。此外,也具备语法提示,比如输入match_ 就会提示到 match_all 作为选项供你选择输入。

可以执行多个语句命令,但右边的返回数据展示窗口只展示最后一个语句命令的执行结果。

左上角的 历史记录 按钮,可以查询历史执行过的命令,鼠标悬停在上面就会展示右边命令的具体内容在右边。如需再次执行,点击右下角的应用按钮(并非点击无效,然后需手动关闭历史记录界面。所以只需点一次),命令内容就会自动写到了左边的窗口,然后点击 乱码按钮或者左上角的 历史记录 按钮,关闭/隐藏 历史执行记录界面

3.2 一个简单的增删改查示例

ElasticSearch 里面有索引index(等同mysql的表名称)、映射mapping(等同mysql的表结构)、文档doc(等同mysql的一行数据)这三个概念。所以先创建一个索引(表)yulisao,表字段(映射)包括name、age、barth三个字段(执行前请删掉 # 注释内容)

复制代码
PUT /yulisao      # 创建yulisao这个索引并同时添加映射
{
	"mappings": {
		"properties": {
			"name": {  # 字段名
			  "type": "text"   # 数据类型
			},
			"age": {
			  "type": "integer"
			},
			"barth": {
			  "type": "date",
			  "format": "yyyy-MM-dd HH:mm:ss||epoch_millis"  # 数据格式
			}
		}
	}
}

新增数据

往yulisao这个表写入一条数据

复制代码
# 添加一条数据
POST /yulisao/_doc/1    # 1 是文档ID,可以省略则自动生成一个长字符串
{
  "name": "张三",
  "age": 30,
  "barth": "2025-01-01 12:12:12"
}

查询数据

查询yulisao这个表里面name=小王的数据

复制代码
# 查询  {}里面的注释要删除掉在执行,不然报错
GET /yulisao/_search
{
  "query": {
    "match": {
		"name": "小王"
	} # 查询条件
  },
  "size": 5,  # 查询多少条,可省略则返回全部
  "_source": ["name", "age"] # 查哪几个字段返回, 可省略则返回全部字段
}

删除数据

把yulisao这个表里面id=1的数据删掉

复制代码
DELETE /yulisao/_doc/1

------------------------------- 安装过程结束 ------------------------------------------

------------------------------- 以下步骤非必须 ---------------------------------------

四、设置ElasticSearch、kibana密码 (此步骤非必须)

如上操作完成后, 访问以下两个地址都是直接进入了,谁都可以进行访问是不安全的,因此可以可选性的设置账户密码进行访问

ElasticSearch:http://localhost:9200/

kibana:http://localhost:5601/

4.1 创建ElasticSearch内置用户
4.1.1 配置Elasticsearch安全功能

开启安全校验,编辑elasticsearch-7.6.2\config目录下的elasticsearch.yml文件,添加如下(添加后需重启elasticsearch生效, 双击elasticsearch-7.6.2\bin下的elasticsearch.bat)

复制代码
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true

4.1.2 配置内置用户

elasticsearch-7.6.2\bin目录下打开powerShell命令窗口, 输入如下命令进行初始化内置用户(一般是会给初始化elastic、kibana、logstash_system、beats_system这几个用户,其中elastic是超级用户)

复制代码
./elasticsearch-setup-passwords interactive


提示是否确认设置用户和密码,输入y进行确认,依次给这些账户设定密码(至少为6个字符),最后会提示密码已设置完成。然后验证一下,访问ElasticSearch :http://localhost:9200/ 就会提示进行身份验证了。

输入账户elastic和你设置的密码登录,看到json报文就说明用户验证成功。

4.1.3 配置kibana连接用户

kibana-7.6.2-windows-x86_64\config目录下的kibana.yml,编辑添加如下,然后重启kibana

复制代码
elasticsearch.username: "kibana"
elasticsearch.password: "123456" # 你在elasticsearch设置的密码


4.1.4 验证kibana登录

此时kibana也需要进行登录

若登录后提示403错误,可以换超管账户elastic进行登录。(访问http://localhost:5601/logout 或者 重启kibana可以重新到登录界面)

五、IK分词器设置
5.1 ElasticSearch 搜索原理

ElasticSearch 的优势是模糊搜索,主要靠分词器(负责创建倒排索引时对文档分词+用户搜索时对输入的内容分词)。

先说下mysql 模糊搜索是全表扫描,然后逐条去判断是否包含关键词,若包含则把这条数据放结果集最后一起返回。

ElasticSearch 是数据存进的时候就把值进行了切割分词,登记在了分词表,里面记录了该分词和该文档id。这样查询的时候,对用户的关键词进行分词,然后拿这些分词依次去分词表里面搜索得到对应的文档id,最后把这些文档id去重得到结果集。

IK分词器模式

ik_smart:智能切分,粗粒度。比如"中国人",就分割为"中国人"

ik_max_word:最细切分,细粒度。比如"中国人",分割为"中国","国人"

具体可以查看分词效果

复制代码
GET /_analyze
{
  "analyzer": "ik_max_word",  # 分词模式
  "text": "中国人"  # 你的关键词
}

5.2 自定义分词

需求背景:

1、IK分词器对一些新生起的网络名词无法区分,比如"提灯定损"、"犀利哥" 以及新歌名电影名

2、禁止被搜索的信息,比如涉及政治、明星绯闻之类的关键词

设置方法

去IK的配置目录\elasticsearch-7.6.2\plugins\elasticsearch-analysis-ik-7.6.2\config下,编辑IKAnalyzer.cfg.xml文件

ext_dict标签:表示期望可以作为分词

ext_stopwords标签:表示禁止作为分词

在这两个标签之间自定义一个文件名称.dic,然后再通目录下创建该文件,里面写上你需要的分词

重启ElasticSearch,启动黑窗口也会打印日志显示加载你自定义的词典文件路径。这样"提灯定损"就可以作为一个关键词词汇进行分词登记和搜索了

相关推荐
李慕婉学姐1 小时前
【开题答辩过程】以《基于Hadoop架构的体育类短视频推荐系统设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
大数据·hadoop·架构
铭毅天下1 小时前
Elasticsearch 9.X 官方文档大变样了!
大数据·elasticsearch·搜索引擎·全文检索
leijmdas1 小时前
git操作命令
大数据·git·elasticsearch
TDengine (老段)2 小时前
TDengine 地理信息使用说明
大数据·时序数据库·tdengine
Light602 小时前
Spark OA 系统深度分析与改造报告(整合版 + 领码 SPARK 改造计划 + 功能缺口)
大数据·分布式·spark
RioLopez2 小时前
大数据HADOOP之部署HADOOP平台
大数据·hadoop·eclipse
青云交2 小时前
Java 大视界 -- Java 大数据机器学习模型在自然语言处理中的对话系统多轮交互优化与用户体验提升
java·大数据·机器学习·自然语言处理·对话系统·多轮交互
搜移IT科技2 小时前
加密货币市场的二元性 XBIT Wallet 硬件钱包风险缓解多元化策略
大数据·人工智能
Adellle2 小时前
windows安装ES(8.14.x版本)
大数据·windows·elasticsearch