ES入门及安装软件

网络编程-I/O复用

es介绍

Elasticsearch,简称es,是一款高扩展的分布式全文检索引擎。它可以近乎实时的存储,检索数据。es是面向文档型的数据库,一条数据就是一个文档,用json做为文档序列化的格式。es是基于java开发的并使用lucene作为核心来实现所有的索引和搜索功能,将对搜索引擎的操作都封装成restful的api,使用http请求就能对其进行操作。

es的优点:

  • 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索
  • 实时分析的分布式搜索引擎
  • 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据

这里笔者使用的是es7.X,es6和es7的差别还是挺大的,如下:

2.es安装

要求:jdk1.8以上,最低要求1.8。

我这里是安装的windows版本的,es的安装非常简单,开箱即用。如果需要文件,请留言邮箱。

1.如果电脑性能不是很好,可以修改config下的jvm.options中的22行~23行:

-Xms1g
-Xmx1g

因为我的电脑性能不是很好,所以我就改成了256M。

2.解决跨域,用于后面可视化界面和后台的连接。

config下的elasticsearch.yml文件末尾添加:

http.cors.enabled: true
http.cors.allow-origin: "*"

3.启动,bin目录下的elasticsearch.bat,双击即可启动。

4.访问:

5.安装可视化界面(head)

head插件依赖于node.js。所以必须要安装node.js。

head插件基于grunt和http通信。

安装依赖:

# 在elasticsearch-head-master目录下安装淘宝镜像
npm install -g cnpm --registry=https://registry.npm.taobao.org
# 安装完cnpm之后执行
cnpm install
# 启动head插件命令
npm run start

访问:localhsot:9100

图中绿色的表示数据块。

6.安装kibana

kibana也是基于node的。

启动:kibana-7.6.1-windows-x86_64\bin目录下的kibana.bat的文件双击启动。

访问:localhost:5601

Python Tornado系列(甩锅版)

从上图中可以看到,kibana是英文版的,汉化:

kibana-7.6.1-windows-x86_64\config下最后一行添加:

i18n.locale: "zh-CN"

重启之后再此访问,就全是中文版的了。

3.es核心概念

索引(index):索引是组织数据的逻辑命名空间,是存放数据的地方,可以理解为数据库。

类型(type):定义数据结构的,可以理解为数据库的一张表。

文档(document):数据(一个文档就是一条数据),可以理解为数据库的行数据。

倒排索引:一个倒排索引有文档中所有不重复词的列表构成,使用与快速的全文检索。可以理解为数据库通过增加一个索引(比如一个 B树(B-tree))索引 到指定的列上,以便提升数据检索速度。在es中,每个字段的所有数据都是默认被索引的,即每个字段都有为了快速检索设置的专门的倒排索引。同时能在同一个查询中使用所有的倒排索引。

1.物理设计:

es在后台把每个索引划分成多个分片,每个分片可以在集群中的不同服务器间迁移,因为es一般情况下都会搭建集群,当然单机也是集群。

2.逻辑设计:

一个索引类型中,包含多个文档。有多个文档的话,就可以去查找对应得信息,当索引一篇文档时,可以通过这样得一个顺序找到它:索引>类型>文档ID(对应数据库位:数据库>表>行),通过这个组合就能找到对应得某个具体的文档。

4.ik分词器

将elasticsearch-analysis-ik-7.6.1这个文件解压缩,然后放到es的elasticsearch-7.6.1\plugins下,如图:

然后重启es,可以看到ik分词器的插件。

IK分词器提供了两个分词算法:ik_smart(最少切分) ik_max_word(最细粒度划分);

测试:

我在这里使用“塘朗变电站”测试,可以看到,ik分词器将“塘”,“朗”当作一个词,将“变电站”当作一个词。如果我们想将塘朗当作一个词,那么就需要自定义配置词组。

在elasticsearch-7.6.1\plugins\ik\config目录下,有一个IKAnalyzer.cfg.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
	<comment>IK Analyzer 扩展配置</comment>
	<!--用户可以在这里配置自己的扩展字典   在这里我写一个自己的字典-->
	<entry key="ext_dict">charon.dic</entry>
	 <!--用户可以在这里配置自己的扩展停止词字典-->
	<entry key="ext_stopwords"></entry>
	<!--用户可以在这里配置远程扩展字典 -->
	<!-- <entry key="remote_ext_dict">words_location</entry> -->
	<!--用户可以在这里配置远程扩展停止词字典-->
	<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

在config目录下新建一个charon.dic文件,然后在里面新增塘朗。然后就可以看到,配置之后就将“塘朗”变成一个词了。

5.文档操作

最初打算自己做一些关于文档操作的案例的,但是发现在官网文档上有很详细的说明,那就贴出官网的地址吧:

https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

6.使用java代码操作es

这里我就不贴出自己的代码了,下面这位老哥的代码,亲测有效:

https://blog.csdn.net/b15735105314/article/details/112300222

Linux 三剑客之 grep 使用详解

相关推荐

发表评论

路人甲

网友评论(0)