ES入门及安装软件
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

从上图中可以看到,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
ES入门及安装软件的更多相关文章
- ES 入门之一 安装ElasticSearcha
安装ElasticSearcha 学习ES也有快一个月了,但是学习的时候一直没有总结.以前没有总结是因为感觉不会的很多,现在对ES有一点了解了.索性就从头从安装到使用ES做一个详细的总结,也分享给其他 ...
- ES 入门记录之 match和term查询的区别
ElasticSearch 系列文章 1 ES 入门之一 安装ElasticSearcha 2 ES 记录之如何创建一个索引映射 3 ElasticSearch 学习记录之Text keyword 两 ...
- 【转载】绝对干货!Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载九)如何通过源代码安装软件
除了使用Linux的包管理机制进行软件的安装.更新和卸载,从源代码进行软件的安装也是非常常见的,开源软件提供了源代码包,开发者可以方便的通过源代码进行安装.从源码安装软件一般经过软件配置.编译软件.执 ...
- Mac入门(三)使用brew安装软件
brew 又叫Homebrew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件, 只需要一个命令, 非常方便 brew类似ubuntu系统下的apt-get的功能 阅读目录 ...
- (大数据工程师学习路径)第一步 Linux 基础入门----Linux 下软件安装
介绍 介绍 Ubuntu 下软件安装的几种方式,及 apt,dpkg 工具的使用. 一.Linux 上的软件安装 通常 Linux 上的软件安装主要有三种方式: 在线安装 从磁盘安装deb软件包 从二 ...
- Linux基础入门-Linux下软件安装
一.在线安装: sudo apt-get install 即可安装 如果在安装完后无法用Tab键补全命令,可以执行: source ~/.zshrc APT(Advanced Packaging To ...
- Oracle 11g静默安装软件+手工创建数据库
由于是二次跳转+远程操作,无法使用图形界面,不能直接图形界面安装.采用静默安装软件+手工创建数据库的方式完成需求. 静默模式安装Oracle软件,配置监听程序 手工建库 检查各组件是否符合要求 1. ...
- Linux下非root用户如何安装软件
Linux下非root用户如何安装软件 从windows转移到Linux的用户最开始总会有各种不适,因为这种不适最终放弃linux的不在少数.对于这类人只能说可惜,还没有领略到linux的美好就过早放 ...
- 使用brew安装软件
使用brew安装软件 brew 又叫Homebrew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件, 只需要一个命令, 非常方便 brew类似ubuntu系统下的apt- ...
随机推荐
- 程序运行慢?你怕是写的假 Python
Python程序运行太慢的一个可能的原因是没有尽可能的调用内置方法,下面通过5个例子来演示如何用内置方法提升Python程序的性能. 1. 数组求平方和 输入一个列表,要求计算出该列表中数字的的平方和 ...
- Python常用配置文件ini、json、yaml读写总结
开发项目时,为了维护一些经常需要变更的数据,比如数据库的连接信息.请求的url.测试数据等,需要将这些数据写入配置文件,将数据和代码分离,只需要修改配置文件的参数,就可以快速完成环境的切换或者测试数据 ...
- C# 链表 二叉树 平衡二叉树 红黑树 B-Tree B+Tree 索引实现
链表=>二叉树=>平衡二叉树=>红黑树=>B-Tree=>B+Tree 1.链表 链表结构是由许多节点构成的,每个节点都包含两部分: 数据部分:保存该节点的实际数据. 地 ...
- 【命令】ps命令
1.功用: <---用于报告当前系统的进程状态,实际是将/proc/目录下的各个进程的相关信息转换为我们易读的模式展现出来:可以搭配kill指令随时中断.删除不必要的程序---> 语法格式 ...
- Java进阶专题(二十) 消息中间件架构体系(2)-- RabbitMQ研究
前言 接上文,这个继续介绍RabbitMQ,并理解其底层原理. 介绍 RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的 ...
- chrome实现网页高清截屏(F12、shift+ctrl+p、capture)
打开需要载屏的网页,在键盘上按下F12,出现以下界面 上图圈出的部分有可能会出现在浏览器下方,这并没有关系.此时按下 Ctrl + Shift + P(Mac 为 ⌘Command +⇧Shift + ...
- java线程,进程,多线程
(1)线程和进程 通俗一点,进程就是一个应用程序在处理机上的一次执行过程,它是一个动态的概念,而线程是进程中的一部分,进程包含多个线程在运行. (2)java中实现线程的两种方式,第一种是继承Thre ...
- 20210107 - python 的Excel自动化
1.前置条件:用python, 开发工具pycharm 2.安装包: pip install openpyxl, 该包支持:xlsx, 但是不支持xlrd.xlwt格式的文件 3.概念介绍: 一个e ...
- Angular入门到精通系列教程(10)- 指令(Directive)
1. 摘要 2. 组件与指令之间的关系 2.1. 指令的种类 3. Angular 中指令的用途 4. 指令举例 4.1. 指令功能 4.2. Anuglar CLI生成基本文件 4.3. Direc ...
- Shiro配置Session检测时Quartz版本冲突
项目背景: shiro 1.3 + quartz 2.x 2018-9-11 22:20:35补充: 经过测试,本人发现 ,通过实现 org.apache.shiro.session.mgt.Exec ...