Elasticsearch数据库 | Elasticsearch-7.5.0应用基础实战
Elasticsearch 是一个可用于分布式以及符合RESTful 风格的搜索和数据分析引擎。—— Elastic Stack 官网
关于Elasticsearch的“爱恨情仇"
或许提起搜索服务器,大部分人都会想起Solr 和 Elasticsearch 甚至以及国产大厂自研等。随着人工智能和大数据时代的到来,甚至还带动了一系列的机器引擎的出现,譬如Splunk等。其中Solr 和 Elasticsearch是基于Lucene的搜索服务器。一般Solr是面向的是全文检索引擎,而Elasticsearch是用于全文搜索、结构化搜索、分析。而对于Splunk机器数据的引擎,可收集、索引和利用所有应用程序、服务器和设备生成的快速移动型计算机数据。可是不论技术如何发展和更替,作为一位程序员,我们要做的不就是即时地维护技术储备知识库和实时更新自己的技术缓存,以及实现可扩展性的技术深度树的增长。
关于Elasticsearch,记得当时接触到Elasticsearch的名词的时候,那是2017年的夏天。当时的工作任务是实现一个关于知识库的系统。当时小伙伴们技术选型主要还是偏向Solr+Lucene来的做,有的甚至说直接使用Mysql数据库的自带函数来做。我是在无意中,在网上查询搜索引擎的技术实战的时候,看见了一篇对于Elasticsearch应用实战的应用报告分析,才去查询了Elasticsearch的相关资料。不过,当时网上大部分对于搜索功能的Demo,大部分还是关于Solr 的比较多。也许在那个时候,大部分的技术概念基本都是偏向于技术长期稳定和文档资料全,使用程度相对较重的因素。但是,我个人却留了一个心眼,自己尝试去实战Elasticsearch。
第一次,动手实操还是在Windows本机上安装(22G内存)的。其中,安装过程相比利用Tomcat+Solr来说,相对较复杂,而且对于本机的内存和功耗占用较重。个开发基本只能说是能运行起来,可稳定性方面,就有点显得望而却步的感觉。第二次,动手实战是在本机搭建了一个虚拟机去实战(2核8G),可在网络通信方面,当时选的是网络桥接方式,也让我对此觉得很是麻烦。第三次,是自己拥有了自己的阿里云服务器,在上面按照传统部署方式(相对于Docker部署来说),可无奈个人服务器内存较低(2核4G),修改配置JVM等无法启动成功,总是抛出GC日志什么的问题,主要还是当时囊中羞涩的问题,甚至一旦运行Elasticsearch服务,其它的应用便无法启动和 运行。后来,接触了Docker,于是,有了第四次的Elasticsearch实战(单节点部署)。第四次,升级了阿里云服务器的配置(2核8G),最终实现了额自己的第一个Elasticsearch服务。甚至,为在后来工作中,动手实战Elasticsearch分布式集群服务奠定基础。
基本概述
- 似乎从某种意义来说Elasticsearch和MongoDB/Redis/Memcache一样,是一种Nosql数据库。是一个接近实时的搜索平台,从索引这个文档到这个文档能够被搜索到只有一个轻微的延迟,企业应用定位:采用Restful API标准的可扩展和高可用的实时数据分析的全文搜索工具。不过在当时,Elastic Stack只有Elasticsearch、Kibana 和 Logstash用例,还没有包含Beats等。而且在应用方面,除了来当作ELK分布式日志系统搭建外,更多的是Elasticsearch +Elasticsearch-Head插件在满足业务场景方面的需求,能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化等。
- 基本特点:
- 可拓展:支持一主多从且扩容简易,只要cluster.name一致且在同一个网络中就能自动加入当前集群;本身就是开源软件,也支持很多开源的第三方插件
- 高可用:在一个集群的多个节点中进行分布式存储,索引支持shards和复制,即使部分节点down掉,也能自动进行数据恢复和主从切换
- 采用RestfulAPI标准:通过http接口使用JSON格式进行操作数据
- 数据存储的最小单位是文档,本质上是一个JSON 文本
Elasticsearch关键词
- Node : 节点,单个装有Elasticsearch服务并且提供故障转移和实现可扩展的服务器
- Cluster : 集群,一个Elasticsearch-Cluster集群是有一个Node或者至少2个Node组成的服务器,共同服务和分享Node节点数据的具有负载均衡的功能,甚至基于Zookeeper集群的高可用服务等。
- Index : 索引,具有相同或者相似特征的Document文档对象的集合
- Type : 类型,相同Filed字段的文档定义一个Type类型,一个Type可以创建多个Index索引
- Document :文档,一个Document文档可以被用作Index索引的基础信息单元
- Field : 字段列,Field是Elasticsearch的最小单元,相挡当于数据的某一列
- Shards :分片,Elasticsearch把Index索引分成若干份,每一个部分就是一个Shard分片
- Replicas : 复制,每个Inex索引里每个Shard分片的拷贝或者说是数据备份
Elasticsearch 结构与其它数据库对比
databaseType | databaseName | database | databaseTable | databaseRow | databaseColumn |
---|---|---|---|---|---|
sql | Mysql | 数据库-database | 表-table | 数据行-row | 数据列-column |
Nosql | Elasticsearch | 索引-index | 类型-type | 文档-document | 字段列-field |
版权声明:本文为博主原创文章,遵循相关版权协议,如若转载或者分享请附上原文出处链接和链接来源。
Elasticsearch数据库 | Elasticsearch-7.5.0应用基础实战的更多相关文章
- Elasticsearch数据库 | Elasticsearch-7.5.0应用搭建实战
Elasticsearch 是一个可用于分布式以及符合RESTful 风格的搜索和数据分析引擎.-- Elastic Stack 官网 搭建Elasticsearch的"那些事儿" ...
- Elasticsearch通关教程(一): 基础入门
简介 Elasticsearch是一个高度可扩展的.开源的.基于 Lucene 的全文搜索和分析引擎.它允许您快速,近实时地存储,搜索和分析大量数据,并支持多租户. Elasticsearch也使用J ...
- elasticSearch数据库、skywalking集群部署
Centos6上面安装elasticsearc数据库的集群 安装的是6.3.2版本,安装之前首先要先安装jdk1.8版本 安装之前首先需要关闭防火墙 Centos6 sudo service ipta ...
- [转帖]Elasticsearch数据库
Elasticsearch数据库 2018-05-06 11:30:48 七色米 阅读数 23634更多 分类专栏: 数据库 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转 ...
- Elasticsearch数据库优化实战:让你的ES飞起来
摘要:ES已经成为了全能型的数据产品,在很多领域越来越受欢迎,本文旨在从数据库领域分析ES的使用. 本文分享自华为云社区<Elasticsearch数据库加速实践>,原文作者:css_bl ...
- ElasticSearch和ElasticSearch Head环境搭建和数据模拟
首先elasticsearch-6.0.0\bin目录下运行elasticsearch服务 修改elasticsearch-6.0.0\elasticsearch.yml文件 在文件最后加入下面代码, ...
- Elasticsearch系列---Elasticsearch的基本概念及工作原理
基本概念 Elasticsearch有几个核心的概念,花几分钟时间了解一下,有助于后面章节的学习. NRT Near Realtime,近实时,有两个层面的含义,一是从写入一条数据到这条数据可以被搜索 ...
- ElasticSearch 全文检索— ElasticSearch 安装部署
ElasticSearch 规划-集群规划 ElasticSearch 规划-集群规划 ElasticSearch 规划-用户规划 ElasticSearch 规划-目录规划 ElasticSearc ...
- ElasticSearch 全文检索— ElasticSearch概述
ElasticSearch 产生背景 1.海量数据组合条件查询 2.毫秒级或者秒级返回数据 Lucene 定义 lucene是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一 ...
随机推荐
- 使用grub2引导进入Linux或Window系统
很多人在一通烂搞之后把自己的grub搞崩了(比如我当时手贱删除了boot分区)虽然后来又装了grub,但是进入grub后还是没有引导,只有一个孤零零的命令行界面 这时候应该怎么办呢?首先当然是想进入系 ...
- MySQL引擎【转】
数据库引擎介绍MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL.在缺省情况下,MYSQL支持三个引擎:ISAM.MYISAM和HEAP.另外 ...
- 七夕节来啦!AI一键生成情诗,去发给你的女朋友吧!
[摘要] Hello大家好,今天就是七夕节了,为了增进和女朋友之间的情感,我写了一个自动生成情诗的AI: 大家可以在ModelArts尝试复现模型,然后快去发给你们的女朋友吧- 大家好,我是b站up主 ...
- Java面试题(网络篇)
网络 79.http 响应码 301 和 302 代表的是什么?有什么区别? 301,302 都是HTTP状态的编码,都代表着某个URL发生了转移. 区别: 301 redirect: 301 代表永 ...
- Java中的 "==" 和 "equals" 区别
分析 "==" 和 "equals" 区别的时候先了解一下Java的内存. Java内存 “==” 和 “equals” 区别” “==”: “==”比较的是 ...
- 网站更换服务器或IP对排名有影响吗
http://www.wocaoseo.com/thread-287-1-1.html 网站更换服务器或IP对排名有影响吗 复制代码 百度官方观点:原则上是不会的.除非-新换的服务器太糟糕,三天两头访 ...
- Python和Nose实现移动应用的自动化测试
今天跟大家聊的是Python和Nose实现移动应用的自动化测试,希望对你们有帮助,有说的不好的地方,还请多多指教! 采用Appium进行自动化的功能性测试最酷的一点是,你可以使用具有最适合你的测试工具 ...
- printf size_t warning
printf("print discoverList.size()=[%u]\n", discoverList.size()); src/ResultToDB.cpp:2768: ...
- Istio 的配置分析
Istio 的配置分析 目录 Istio 的配置分析 Analyzer 的消息格式 ConflictingMeshGatewayVirtualServiceHosts 问题解决 举例 Conflict ...
- opencv-python函数
opencv-python读取.展示和存储图像 1.imshow函数 imshow函数作用是在窗口中显示图像,窗口自动适合于图像大小,我们也可以通过imutils模块调整显示图像的窗口的大小.函数官方 ...