elk入门概念详解

开始第一步

我们现在开始进行一个简单教程,它涵盖了一些基本的概念介绍,比如索引(indexing)、搜索(search)以及聚合(aggregations)。通过这个教程,我们可以让你对Elasticsearch能做的事以及其易用程度有一个大致的感觉。

我们接下来将陆续介绍一些术语和基本的概念,但就算你没有马上完全理解也没有关系。我们将在本书的各个章节中更加深入的探讨这些内容。

所以,坐下来,开始以旋风般的速度来感受Elasticsearch的能力吧!

让我们建立一个员工目录

假设我们刚好在Megacorp工作,这时人力资源部门出于某种目的需要让我们创建一个员工目录,这个目录用于促进人文关怀和用于实时协同工作,所以它有以下不同的需求:

数据能够包含多个值的标签、数字和纯文本。

检索任何员工的所有信息。

支持结构化搜索,例如查找30岁以上的员工。

支持简单的全文搜索和更复杂的短语(phrase)搜索

高亮搜索结果中的关键字

能够利用图表管理分析这些数据

索引员工文档

我们首先要做的是存储员工数据,每个文档代表一个员工。在Elasticsearch中存储数据的行为就叫做索引(indexing),不过在索引之前,我们需要明确数据应该存储在哪里。

在Elasticsearch中,文档归属于一种类型(type),而这些类型存在于索引(index)中,我们可以画一些简单的对比图来类比传统关系型数据库:

Relational DB -> Databases -> Tables -> Rows -> Columns

Elasticsearch -> Indices   -> Types  -> Documents -> Fields

Elasticsearch集群可以包含多个索引(indices)(数据库),每一个索引可以包含多个类型(types)(表),每一个类型包含多个文档(documents)(行),然后每个文档包含多个字段(Fields)(列)。

「索引」含义的区分

你可能已经注意到索引(index)这个词在Elasticsearch中有着不同的含义,所以有必要在此做一下区分:

索引(名词) 如上文所述,一个索引(index)就像是传统关系数据库中的数据库,它是相关文档存储的地方,index的复数是indices 或indexes。

索引(动词) 「索引一个文档」表示把一个文档存储到索引(名词)里,以便它可以被检索或者查询。这很像SQL中的INSERT关键字,差别是,如果文档已经存在,新的文档将覆盖旧的文档。

倒排索引 传统数据库为特定列增加一个索引,例如B-Tree索引来加速检索。Elasticsearch和Lucene使用一种叫做倒排索引(inverted index)的数据结构来达到相同目的。

默认情况下,文档中的所有字段都会被索引(拥有一个倒排索引),只有这样他们才是可被搜索的。

我们将会在倒排索引章节中更详细的讨论。

所以为了创建员工目录,我们将进行如下操作:

为每个员工的文档(document)建立索引,每个文档包含了相应员工的所有信息。

每个文档的类型为employee。

employee类型归属于索引megacorp。

megacorp索引存储在Elasticsearch集群中。

实际上这些都是很容易的(尽管看起来有许多步骤)。我们能通过一个命令执行完成的操作:

PUT /megacorp/employee/1

{

"first_name" : "John",

"last_name" :  "Smith",

"age" :        25,

"about" :      "I love to go rock climbing",

"interests": [ "sports", "music" ]

}

我们看到path:/megacorp/employee/1包含三部分信息:

名字 说明

megacorp 索引名

employee 类型名

1 这个员工的ID

请求实体(JSON文档),包含了这个员工的所有信息。他的名字叫“John Smith”,25岁,喜欢攀岩。

很简单吧!它不需要你做额外的管理操作,比如创建索引或者定义每个字段的数据类型。我们能够直接索引文档,Elasticsearch已经内置所有的缺省设置,所有管理操作都是透明的。

接下来,让我们在目录中加入更多员工信息:

PUT /megacorp/employee/2

{

"first_name" :  "Jane",

"last_name" :   "Smith",

"age" :         32,

"about" :       "I like to collect rock albums",

"interests":  [ "music" ]

}

PUT /megacorp/employee/3

{

"first_name" :  "Douglas",

"last_name" :   "Fir",

"age" :         35,

"about":        "I like to build cabinets",

"interests":  [ "forestry" ]

}

结果:

[[email protected] elasticsearch]#

curl -i -XPUT 127.0.0.1:9200/megacorp/employee/1 -d ‘                     
{
    "first_name" : "John",
    "last_name" :  "Smith",
    "age" :        25,
    "about" :      "I love to go rock climbing",
    "interests": [ "sports", "music" ]
}
‘

结果: 集群数据目录多一个了index megacorp名名称的(indices目录是 index名称的复数)

[[email protected] elasticsearch]#

ls -l /tmp/elasticsearch/data/elasticsearch-cluster/nodes/0/indices/megacorp/
total 24
drwxr-xr-x 5 elasticsearch elasticsearch 4096 May 15 19:32 0
drwxr-xr-x 5 elasticsearch elasticsearch 4096 May 15 19:31 1
drwxr-xr-x 5 elasticsearch elasticsearch 4096 May 15 19:32 2
drwxr-xr-x 5 elasticsearch elasticsearch 4096 May 15 19:31 3
drwxr-xr-x 5 elasticsearch elasticsearch 4096 May 15 19:33 4
drwxr-xr-x 2 elasticsearch elasticsearch 4096 May 15 19:33 _state
时间: 2024-12-22 08:26:21

elk入门概念详解的相关文章

LINUX 信号概念详解

LINUX 信号概念详解 我们运行如下命令,可看到Linux支持的信号列表: # kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19) SIGSTOP

Linux 程序设计学习笔记----终端及串口编程基础之概念详解

转载请注明出处,谢谢! linux下的终端及串口的相关概念有: tty,控制台,虚拟终端,串口,console(控制台终端)详解 部分内容整理于网络. 终端/控制台 终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念. 1.终端 一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有字符哑终端和图形终端两种. 控制台是另一种人机接口, 不通过终端与主机相连, 而是通过显示卡-显示器和键盘接口分别与主机相连, 这是人控制主机的第一人机接口.

varnish基础概念详解

varnish基础概念详解 比起squid更加轻量级,大致有以下几个特点: ·可以基于内存缓存,也可以在磁盘上缓存,但是就算存放在磁盘上,也不能实现持久缓存 只要进程崩溃,此前缓存统统失效,无论是在内存还是在磁盘,但是现在已经具备持久缓存功能,但是仍然在实验阶段,经常容易崩溃,而且最大大小不能超过1G 如果期望内存大小超过几十个G,比如图片服务器,纯粹使用内存,性能未必好,这时候可以使用磁盘进行缓存,或SSD X 2 做RAID 避免磁盘损坏,在实现随机访问上 ssd硬盘要比机械硬盘要好的多,如

Mybatis最入门---配置详解(下)

[一步是咫尺,一步即天涯] 上文我们详细解释了HelloWorld工程中的配置项,本文,我们再来介绍一些更加基础,灵活的配置项.本文,我们先不演示具体的工程,后续的文章中会按照实际应用来配置相关的参数.敬请期待! -----------------------------------------------------------------------------------------------------------------------------------------------

【第11篇】最全的中文TypeScript入门指南详解案例教程与代码案例

一.最全的中文TypeScript入门指南详解案例教程           文档下载 二.代码案例 源代码下载 手机微信扫一扫有惊喜... ================================================================================================================= 1.详细安装文章请看 http://blog.csdn.net/jilongliang/article/details/219429

RAID0 RAID1 RAID3 RAID5 RAID6 RAID10 RAID50概念详解

RAID0 RAID1 RAID3 RAID5 RAID6 RAID10 RAID50概念详解摘要:RAID 0又称为Stripe或Striping(条带卷),它代表了所有RAID级别中最高的存储性能.RAID 0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请求就可以被多个磁盘并行的执行,每个磁盘执行属于它自己的那部分数据请求.这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能RAID 1又称为Mirror或Mirroring(镜像卷),它的宗旨是最大

SOA概念详解

1.概述 1.1基本定义 SOA(Service-Oriented Architecture)既面向服务的体系结构,是一个组件模型,它将应用程序员的不同功能但是(称为服务)通过定义良好的接口联系起来.SOA建立在Web服务的基础上,它可以看做是B/S模型.XML/Web Service技术之后的自然延伸.SOA将能够帮助我们站在一个新的告诉理解企业级架构中的各种组件的开发.部署形式,它将帮助企业系统架构这以更迅速.更可靠.更具有重用性的性能架构整个业务系统.较之以往,以SOA架构的系统能够更加从

进行概念详解 多线程上篇(二)

操作系统是程序与硬件交互的中间层,现代操作系统将程序的一次执行抽象为进程和线程的概念. 进程作为资源分配的基本单位,线程作为执行的基本单位. 进程和线程其实就是操作系统程序本身实现控制一个程序运行的数据项描述 所有的程序都是面向语言进行开发的,而语言本身是面向操作系统的,线程是操作系统对程序一次运行的抽象 所以,所有的多线程编程模型,必然遵从操作系统的大逻辑,必然是符合操作系统的对线程的抽象概念,操作系统在抽象之上提供了API供应用程序调用 简言之,应用程序的底层是借助于操作系统来完成多线程编程

Android入门——Fragment详解之基本概念与用法(一)

引言 Android在3.0中引入了Fragments的概念,其目的是用在大屏幕设备上–例如平板电脑上,支持更加动态和灵活的UI设计.平板电脑的屏幕要比手机的大得多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互.Fragment允许这样的一种设计,而不需要你亲自来管理 Viewhierarchy的复杂变化. 通过将Activity的布局分散到Fragment中, 你可以在运行时修改Activity的外观,并在由Activity管理的back stack中保存那些变化. 一.F