Elasticsearch 6.1官方参考手册(一)入门(1)基础概念

news/2023/12/9 2:59:28

入门

Elasticsearch是一个高度可伸缩的开源全文搜索和分析引擎。它允许你以近实时的方式快速存储、搜索和分析大量的数据。它通常被用作基础的技术来赋予应用程序复杂的搜索特性和需求。

这里列举了几个Elasticsearch可以用来做的功能例子

  • 你有一个在线网上商城,提供用户搜索你所卖的商品功能。在这个例子中,你可以使用Elasticsearch去存储你的全部的商品目录和存货清单并且提供搜索和搜索自动完成以及搜索推荐功能。
  • 你想去收集日志或者业务数据,并且去分析并从这些数据中挖掘寻找市场趋势、统计资料、摘要信息或者反常情况。在这个例子中,你可以使用Logstash(part of the Elasticsearch/Logstash/Kibana stack)去收集、聚合并且解析你的数据,然后通过Logstash将数据注入Elasticsearch。一旦数据进入Elasticsearch,你就可以运行搜索和聚集并且从中挖掘任何你感兴趣的数据。
  • 你运行一个价格预警平台,它可以让那些对价格精明的客户指定一个规则,比如:“我相中了一个电子产品,并且我想在下个月任何卖家的这个电子产品的价格低于多少钱的时候提醒我”。在这个例子中,你可以抓取所有卖家的价格,把价格放入Elasticsearch并且使用Elasticsearch的反向搜索(过滤器/抽出器)功能来匹配价格变动以应对用户的查询并最终一旦发现有匹配结果时给用户弹出提示框。
  • 你有分析学/商业情报的需求并且想快速审查、分析并使用图像化进行展示,并且在一个很大的数据集上查询点对点的问题(试想有百万或千万的记录)。在这个例子中,你可以使用Elasticsearch去存储你的数据然后使用Kibana(part of the Elasticsearch/Logstash/Kibana stack)去构建定制化的仪表盘。这样你就可以很直观形象的了解对你重要的数据。此外,你可以使用Elasticsearch的集成功能,靠你的数据去展现更加复杂的商业情报查询。

在剩余的本教程中,你将会被引导去把Elasticsearch安装好并运行起来,并且对它有一个简单的了解。使用基础的操作比如索引,搜索以及修改你的数据。当你完成这个教程的时候,你应该对Elasticsearch有了一个不错的了解,它是怎么工作的,并且我们希望你能够使用它构建出更加复杂精致的搜索应用来挖掘你的数据里的价值。

基础概念

这里有一些Elasticsearch的核心概念。在一开始理解这些概念将会极大的使你的学习过程变得更加轻松。

  • 近实时性(Near Realtime[NRT])

Elasticsearch是一个近实时的搜索平台。这意味着当你导入一个文档并把它变成可搜索的时间仅会有轻微的延时。

  • 集群(Cluster)

一个集群是由一个或多个节点(服务器)组成的,通过所有的节点一起保存你的全部数据并且提供联合索引和搜索功能的节点集合。每个集群有一个唯一的名称标识,默认是“elasticsearch”。这个名称非常重要,因为一个节点(Node)只有设置了这个名称才能加入集群,成为集群的一部分。

确保你没有在不同的环境下重用相同的名称,否则你最终可能会将节点加入错误的集群。例如你可以使用logging-dev,logging-stage和logging-prod来分别给开发,展示和生产集群命名。

注意,一个集群中只有一个节点是有效的并且是非常好的。所以这样的话,你可能需要部署多个集群并且每个集群有它们唯一的集群名称。

  • 节点(Node)

一个节点是一个单一的服务器,是你的集群的一部分,存储数据,并且参与集群的索引和搜索功能。跟集群一样,节点在启动时也会被分配一个唯一的标识名称,这个名称默认是一个随机的UUID(Universally Unique IDentifier)。如果你不想用默认的名称,你可以自己定义节点的名称。这个名称对于管理集群节点,识别哪台服务器对应集群中的哪个节点有重要的作用。

一个节点可以通过配置特定的集群名称来加入特定的集群。默认情况下,每个节点被设定加入一个名称为“elasticsearch”的集群,这意味着如果你在你的网络中启动了一些节点,并且假设它们能相互发现,它们将会自动组织并加入一个名称是“elasticsearch”的集群。

在一个集群中,你想启动多少节点就可以启动多少节点。此外,如果没有其它节点运行在当前网络中,只启动一个节点将默认形成一个新的名称为“elasticsearch”单节点集群。

  • 索引(Index)

一个索引就是含有某些相似特性的文档的集合。例如,你可以有一个用户数据的索引,一个产品目录的索引,还有其他的有规则数据的索引。一个索引被一个名称(必须都是小写)唯一标识,并且这个名称被用于索引通过文档去执行索引,搜索,更新和删除操作。

在一个集群中,你可以根据自己的需求定义任意多的索引。

  • 类型(Type)[Deprecated in 6.0.0.]

警告!Type在6.0.0版本中已经不赞成使用

一个类型是你的索引中的一个分类或者说是一个分区,它可以让你在同一索引中存储不同类型的文档,例如,为用户建一个类型,为博客文章建另一个类型。现在已不可能在同一个索引中创建多个类型,并且整个类型的概念将会在未来的版本中移除。查看“映射类型的移除[https://www.elastic.co/guide/...]”了解更多。

  • 文档(Document)

一个文档是一个可被索引的数据的基础单元。例如,你可以给一个单独的用户创建一个文档,给单个产品创建一个文档,以及其他的单独的规则。这个文档用JSON格式表现,JSON是一种普遍的网络数据交换格式。

在一个索引或类型中,你可以根据自己的需求存储任意多的文档。注意,虽然一个文档在物理存储上属于一个索引,但是文档实际上必须指定一个在索引中的类型。

  • 分片和复制(Shards & Replicas)

我们在一个索引里存储的数据,潜在的情况下可能会超过单节点硬件的存储限制。例如,单个索引有上千万个文档需要占用1TB的硬盘存储空间,但是一台机器的硬盘可能没有这么大,或者是即便有这么大,但是单个节点在提供搜索服务时会响应缓慢。

为了解决这个问题,Elasticsearch提供了分片的能力,它可以将你的索引细分成多个部分。当你创建一个索引的时候,你可以简单的定义你想要的分片的数量。每个分片本身是一个全功能的完全独立的“索引”,它可以部署在集群中的任何节点上。

分片对于以下两个主要原因很重要:

  • 它允许你水平切分你的内容卷
  • 它允许你通过分片来分布和并行化执行操作来应对日益增长的执行量

一个分片是如何被分配以及文档又是如何被聚集起来以应对搜索请求的,它的实现技术由Elasticsearch完全管理,并且对用户是透明的。

在一个网络环境下或者是云环境下,故障可能会随时发生,有一个故障恢复机制是非常有用并且是高度推荐的,以防一个分片或节点不明原因下线,或者因为一些原因去除没有了。为了达到这个目的,Elasticsearch允许你制作分片的一个或多个拷贝放入一个叫做复制分片或短暂复制品中。

复制对于以下两个主要原因很重要:

  • 高可用。它提供了高可用来以防分片或节点宕机。为此,一个非常重要的注意点是绝对不要将一个分片的拷贝放在跟这个分片相同的机器上。
  • 高并发。它允许你的分片可以提供超出自身吞吐量的搜索服务,搜索行为可以在分片所有的拷贝中并行执行。

总结一下,每个索引可以被切分成多个分片,一个索引可以被复制零次(就是没有复制)或多次。一旦被复制,每个索引将会有一些主分片(就是那些最原始不是被复制出来的分片),还有一些复制分片(就是那些通过复制主分片得到的分片)。

主分片和复制分片的数量可以在索引被创建时指定。索引被创建后,你可以随时动态修改复制分片的数量,但是不能修改主分片的数量。

默认情况下,在Elasticsearch中的每个索引被分配5个主分片和一份拷贝,这意味着假设你的集群中至少有两个节点,你的索引将会有5个主分片和5个复制分片(每个主分片对应一个复制分片,5个复制分片组成一个完整拷贝),总共每个索引有10个分片。

每个Elasticsearch分片是一个Lucene索引。在一个Lucene索引中有一个文档数量的最大值。截至LUCENE-5843,这个限制是2,147,483,519 (= Integer.MAX_VALUE - 128)个文档。你可以使用_cat/shards API监控分片大小。

现在熟悉了概念之后,让我们开始有趣的部分吧...


http://www.niftyadmin.cn/n/4184295.html

相关文章

完善String类([]、 +、 += 运算符重载)、和运算符重载

在前面文章中使用过几次String类的例子&#xff0c;现在多重载几个运算符&#xff0c;更加完善一下&#xff0c;并且重载流类运算符。 []运算符重载 运算符重载 运算符重载 <<运算符重载 >>运算符重载 String.h&#xff1a; C Code 123456789101112131415161718192…

44.3. Image Charts

44.3.1. PHPGraphLib Graphing Library http://www.ebrueggeman.com/phpgraphlib 44.3.2. pChart - a PHP class to build charts http://pchart.sourceforge.net/ 44.3.3. FnordMetric ChartSQL http://fnordmetric.io/ 原文出处&#xff1a;Netkiller 系列 手札 本文作者&…

Android第三方微博、无线传输、动画特效、商城应用等源码

Android精选源码 Android汽车助手源码 一个酷炫的Android特效源码 新浪微博的第三方客户端、UI遵循Material Design。 Android实现旋转木马布局多种效果 Android互传文件&#xff0c;局域网&#xff0c;无网传输文件源码 Android高仿秒拍卡片滑动和左右飞出效果 LOLBox多玩饭盒…

SQLAlchemy的group_by和order_by的区别

1、官网解释&#xff1a;group_by(*criterion)apply one or more GROUP BY criterion to the query and return the newly resulting Query 2、官网解释&#xff1a; order_by(*criterion) apply one or more ORDER BY criterion to the query and return the newly resulting …

Kubernetes1.91(K8s)安装部署过程(三)--创建高可用etcd集群

这里的etcd集群复用我们测试的3个节点&#xff0c;3个node都要安装并启动&#xff0c;注意修改配置文件 1、TLS认证文件分发&#xff1a;etcd集群认证用&#xff0c;除了本机有&#xff0c;分发到其他node节点 scp ca.pem kubernetes-key.pem kubernetes.pem root10.10.90.106:…

python3进行3des的加密解密

#秘钥长度正常24位&#xff0c;16位补齐第一个八位 import pyDes import base64print(key1) keys1234567890123456 k pyDes.triple_des(keys,pyDes.ECB, "\0\0\0\0\0\0\0\0",padNone, padmodepyDes.PAD_PKCS5) d k.encrypt("137613") print(base64.b64en…

python pcapy 安装错误 link.exe failed with exit status 1120

Win7 64位 安装pcapy 包时报错&#xff1a; error: command "C:\Users\Administrator\AppData\Local\Programs\Common\Microsoft\Visual C for Python\9.0\VC\Bin\amd64\link.exe" failed with exit status 1120 安装过程参考如下后&#xff0c;依然报错&#xff1a;…

Python中的列表解析和生成器表达式

Python中的列表解析和生成器表达式 作者&#xff1a;尹正杰 版权声明&#xff1a;原创作品&#xff0c;谢绝转载&#xff01;否则将追究法律责任。 一.列表解析案例 1 #&#xff01;/usr/bin/env python2 #_*_coding:utf-8_*_3 #author :yinzhengjie4 #blog:http://www.cnblogs…

C#联合halcon读取上一张下一张图像

namespace picture { public partial class Form1 : Form { public Form1 () { InitializeComponent(); } //获得文件夹中所有图片文件的全路径 string [] path Directory.GetFiles( “C:\Users\yn\Pictures\C#” ); int i 0 ; //下一张 private void button2_Click ( object…

如何高效撤销Git管理的文件在各种状态下的更改

一、背景 企业中我们一般采用分布式版本管理工具git来进行版本管理&#xff0c;在团队协作的过程中&#xff0c;我们难免会遇到误操作&#xff0c;需要撤销更改的情况&#xff0c;那么我们怎么高效的进行撤销修改呢&#xff1f;对于还未提交到暂存区的代码怎么高效撤销更改呢&a…

解决NETCORE2.0 IdentityServer4.EntityFramework 在Mysql上字段过长的问题

和Identity的问题相似&#xff0c;通过替换掉默认的PersistedGrantDbContext来实现 新建一个 PersistedGrantMysqlDbContext类 实现默认提供的PersistedGrantDbContext public class PersistedGrantMysqlDbContext : PersistedGrantDbContext<PersistedGrantDbContext> …

学单词的一点方法

一、背单词需要遵循的原则 1.信心原则 背单词之前一定要给自己信心&#xff0c;我肯定背的完&#xff0c;我今天就一定会记住&#xff0c;不管怎样&#xff0c;我都要记住。 如果你没有信心&#xff0c;就会导致自己背诵的时候目标松懈&#xff0c;感觉单词很难&#xff0c;自己…

JavaScript面向对象入门

什么是JavaScript&#xff1f; 我们可以从几个方面去说JavaScript是什么&#xff1a; 基于对象 javaScript中内置了许多对象供我们使用【String、Date、Array】等等javaScript也允许我们自己自定义对象 事件驱动 当用户触发执行某些动作的时候【鼠标单机、鼠标移动】&#xff…

智能硬件和VR的破局之路

智能硬件陷入恐慌期&#xff1f;怎么破&#xff01;VR大热怎么切入&#xff1f;留给中小团队的机会是什么&#xff1f;欢迎大家共聚一堂探共同探讨&#xff01; Facebook花费20亿美元收购创业公司Oculus&#xff1b;索尼宣布了自己名为Project Morpheus的计划。科幻大片《环太…

「镁客·请讲」南京布塔:用动作捕捉世界的精彩

陈会兵——本文的主人公&#xff0c;就是国内为数不多的从事动作捕捉技术研发的先驱者之一&#xff0c;同时也是一位互联网科技创客。 从《阿凡达》到《猩球崛起》&#xff0c;再到近几年大热的《钢铁侠》、《复仇者联盟》&#xff0c;这些大片中的人物塑造&#xff0c;都离不…

压缩打包的介绍以及几种压缩工具的使用

2019独角兽企业重金招聘Python工程师标准>>> 压缩打包介绍: 压缩的主要目的是&#xff08;节约传输时间&#xff0c;节约磁盘&#xff0c;节约网络带宽&#xff09; gzip压缩工具&#xff1a; gzip压缩级别&#xff08;1-9&#xff09;默认级别6&#xff0c;可以指定…
最新文章