Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有HTTP Web接口和无模式JSON文档。Elasticsearch是用Java开发的,并在Apache许可证下作为开源软件发布。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。[5]根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。[6] -----维基百科
上面是来自权威的维基百科的介绍,下面是我个人的一些拙见,不对的地方还请赐教。
- 它是一个自带分布式的搜索引擎,这点它跟solr的区别最明显。PS:因为solr想达到集群效果需搭配zookeeper来实现查询速度快,在遇到千万级别以上的数据量,它比传统的关系型数据库,或者非关系型数据库都要快它自带一套完全Restful 风格的API系统,通过该API我们与ES进行交互
本文主要介绍如何在Windows下安装使用ES以及如何配置密码,更多的介绍可以浏览官网文档说明https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
环境准备ES官网:https://www.elastic.co/
特别注意:这里Kibana的版本跟Elasticsearch要保持一致,还有建议大家尽量升级到7.16以上的版本,因为之前的版本会存在log4j漏洞问题
Elasticsearch安装 安装成windows服务解压官网下载下来的压缩包后,打开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的账号密码就设置完成了。
Elasticsearch的基本概念 Node 与 ClusterElastic 本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个 Elastic 实例。
单个 Elastic 实例称为一个节点(node)。一组节点构成一个集群(cluster)。
IndexElastic 会索引所有字段,经过处理后写入一个反向索引(Inverted Index)。查找数据的时候,直接查找该索引。
所以,Elastic 数据管理的顶层单位就叫做 Index(索引)。它是单个数据库的同义词。每个 Index (即数据库)的名字必须是小写。
直接浏览器输入命令http://elastic:123456@localhost:9200/_cat/indices?v可以查看当前节点的所有 Index。
documentIndex 里面单条的记录称为 document(文档)。许多条 document 构成了一个 Index。
document 使用 JSON 格式表示,下面是一个例子。
{ "user": "张三", "title": "工程师", "desc": "数据库管理" }
同一个 Index 里面的 document,不要求有相同的结构(scheme),但是最好保持相同,这样有利于提高搜索效率。
Typedocument 可以分组,比如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 入门教程》
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
KibanaKibana 是一款免费开源的前端应用程序,其基础是 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批处理文件,这时候会d出一个控制台程序,然后打开Kibana默认地址http://localhost:5601/ 输入elastic 123456
到这里我们就成功运行起来kibana了,但是每次都要去目录下运行那个批处理文件,还有运行一个控制台程序。这明显不太适用于生产环境,所以我利用nssm把它安装成了windows服务,具体 *** 作可以参考我之前的文章《minio:安装部署并安装成windows服务》
部分功能模块找到左侧的开发工具,这里也可以执行一些简单的增删改查
还有一个索引集群管理的工具也比较好用,可以很直观看出我们当前所有的索引状态、空间等等
更多说明文档可以上官网看看https://www.elastic.co/cn/what-is/kibana
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)