Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有HTTP Web接口和无模式JSON文档。Elasticsearch是用Java开发的,并在Apache许可证下作为开源软件发布。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。[5]根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。[6] -----维基百科
上面是来自权威的维基百科的介绍,下面是我个人的一些拙见,不对的地方还请赐教。
本文主要介绍如何在Windows下安装使用ES以及如何配置密码,更多的介绍可以浏览官网文档说明https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
运行环境/软件名称 | 版本 |
---|---|
操作系统 | win10 |
Java jdk | 1.8.0_51 |
Elasticsearch | 7.16.2 |
Kibana | 7.16.2 |
ES官网:https://www.elastic.co/
特别注意:这里Kibana的版本跟Elasticsearch要保持一致,还有建议大家尽量升级到7.16以上的版本,因为之前的版本会存在log4j漏洞问题
解压官网下载下来的压缩包后,打开bin文件夹,你会看到有很多批处理文件,这些都是官方帮我们写好的。
想运行起来ES有两种办法:第一种是直接双击elasticsearch.bat 批处理文件打开一个控制台程序,第二种是使用cmd进入bin目录然后执行elasticsearch-service.bat install
命令将ES注册到我们windows服务。
打开windows服务列表看看是否存在elasticsearch-service-x64服务
启动服务,并打开http://localhost:9200/ 页面看看。
如果打不开这个页面,建议看看本地是否有安装java环境。
修改config目录下面的elasticsearch.yml文件,在里面添加如下内容,保存配置,然后重启ES。
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true
cmd进入bin文件夹,输入elasticsearch-setup-passwords interactive
命令,按y确认后即可设置密码,为了方便演示,这里我设置的密码都是123456
这时候你在访问http://localhost:9200/ 会提示让你输入账号密码,
还有一种方式通过账号密码链接直接登录http://username:password@localhost:9200
例如我这边是http://elastic:123456@localhost:9200
到这里,ES的账号密码就设置完成了。
Elastic 本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个 Elastic 实例。
单个 Elastic 实例称为一个节点(node)。一组节点构成一个集群(cluster)。
Elastic 会索引所有字段,经过处理后写入一个反向索引(Inverted Index)。查找数据的时候,直接查找该索引。
所以,Elastic 数据管理的顶层单位就叫做 Index(索引)。它是单个数据库的同义词。每个 Index (即数据库)的名字必须是小写。
直接浏览器输入命令http://elastic:123456@localhost:9200/_cat/indices?v
可以查看当前节点的所有 Index。
Index 里面单条的记录称为 Document(文档)。许多条 Document 构成了一个 Index。
Document 使用 JSON 格式表示,下面是一个例子。
{ "user": "张三", "title": "工程师", "desc": "数据库管理" }
同一个 Index 里面的 Document,不要求有相同的结构(scheme),但是最好保持相同,这样有利于提高搜索效率。
Document 可以分组,比如news
这个 Index 里面,可以按栏目分组(娱乐和体育),也可以按地区分组(国内和国外)。这种分组就叫做 Type,它是虚拟的逻辑分组,用来过滤 Document。
不同的 Type 应该有相似的结构(schema),举例来说,id
字段不能在这个组是字符串,在另一个组是数值。这是与关系型数据库的表的一个区别。性质完全不同的数据(比如products
和logs
)应该存成两个 Index,而不是一个 Index 里面的两个 Type(虽然可以做到)。
直接浏览器输入命令http://elastic:123456@localhost:9200/_mapping?pretty=true
可以列出每个 Index 所包含的 Type。
下面的命令可以列出每个 Index 所包含的 Type。根据规划,Elastic 6.x 版只允许每个 Index 包含一个 Type,7.x 版将会彻底移除 Type。
---- 基础概念内容来自《全文搜索引擎 Elasticsearch 入门教程》
这里我以postman为例,做一些简单的CURD操作,后续我使用kibana也可以做简单演示
这里要注意一点,在postman要实现登录效果,我们可以用Authorization的Basic Auth
创建索引
PUT /news
{
"settings" : {
"number_of_shards" : 3,
"number_of_replicas" : 1
}
}
参数说明:
number_of_shards :主分片数量
number_of_replicas:每个主分片的副分片
再去使用查看当前节点所有索引的命令看看是否有新增
删除索引
只需要把请求方式改成delete就行
DELETE /news
POST /news/_doc/1
{
"title": "娱乐测试新闻1",
"column": "娱乐",
"content": "张三上网开心冲浪了"
}
单个查询
GET /news/_doc/1
查询所有:模糊查询title为测试的数据
GET /news/_doc/_search
{
"query": {
"match": {
"title": "测试"
}
}
}
部分更新
POST /news/_doc/1/_update
{
"doc" : {
"content" : "测试更新内容"
}
}
全部更新
PUT /news/_doc/1
{
"title": "娱乐测试新闻1",
"column": "娱乐",
"content": "张三上网开心冲浪了",
"author":"张三"
}
删除单个数据
DELETE /news/_doc/1
删除整个索引
DELETE /news
到这边,简单的增删改查就已经差不多了。
更多的查询大家还是上官网看文档,虽然文档有些过期,但是还是可以使用https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
Kibana 是一款免费开源的前端应用程序,其基础是 Elastic Stack,可以为 Elasticsearch 中索引的数据提供搜索和数据可视化功能。尽管人们通常将 Kibana 视作 Elastic Stack(之前称作 ELK Stack,分别表示 Elasticsearch、Logstash 和 Kibana)的制图工具,但也可将 Kibana 作为用户界面来监测和管理 Elastic Stack 集群并确保集群安全性,还可将其作为基于 Elastic Stack 所开发内置解决方案的汇集中心。Elasticsearch 社区于 2013 年开发出了 Kibana,现在 Kibana 已发展成为 Elastic Stack 的窗口,是用户和公司的一个门户。
---- 来自官网的说明
简单理解,它就是一个官网提供的一个可视化管理工具
这里我主要是说下Kibana如何与ES建立连接以及一些常见的功能操作
修改config文件里面的kibana.yml
因为我们有设置了密码,所以在elasticsearch.hosts选项,需要把带账号密码的完整ES节点地址输入
elasticsearch.hosts: ["http://elastic:123456@localhost:9200"]
还有一个地方,默认是英文版,想变成中文版本只需要改i18n.locale选项
i18n.locale: "zh-CN"
保存完配置,我们就可以直接双击bin文件下的kibana.bat批处理文件,这时候会弹出一个控制台程序,然后打开Kibana默认地址http://localhost:5601/ 输入elastic 123456
到这里我们就成功运行起来kibana了,但是每次都要去目录下运行那个批处理文件,还有运行一个控制台程序。这明显不太适用于生产环境,所以我利用nssm把它安装成了windows服务,具体操作可以参考我之前的文章《minio:安装部署并安装成windows服务》
找到左侧的开发工具,这里也可以执行一些简单的增删改查
还有一个索引集群管理的工具也比较好用,可以很直观看出我们当前所有的索引状态、空间等等
更多说明文档可以上官网看看https://www.elastic.co/cn/what-is/kibana