ElasticSearch 基础(1) - 简介

下一篇 Elastic Search基础(2)

一、ES介绍

Gitbook[中文未完整]: http://learnes.net/

Gitbook[英文完整]:https://allen8807.gitbooks.io/elasticsearch-definitive-guide-en/content/

权威指南: http://es.xiaoleilu.com/

官网: https://www.elastic.co/guide/index.html

官网API:https://www.elastic.co/guide/en/elasticsearch/reference/1.7/index.html

official: Elasticsearch is a distributed, RESTful search and analytics engine capable of solving a growing number of use cases. As the heart of the Elastic Stack, it centrally stores your data so you can discover the expected and uncover the unexpected.

Elasticsearch 是一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎,可以说 Lucene 是当今最先进,最高效的全功能开源搜索引擎框架。但是 Lucene 只是一个框架,要充分利用它的功能,你需要使用 JAVA,并且在你的程序中集成 Lucene。更糟的是,你需要做很多的学习了解,才能明白它是如何运行的,Lucene 确实非常复杂。

当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:

  • 分布式实时存储,并将每一个字段都编入索引,使其可以被搜索(准实时,有轻微延迟,1s左右)。
  • 实时分析的分布式搜索引擎。
  • 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。

Elasticsearch 是 面向文档型数据库,这意味着它存储的是整个对象或者 文档,它不但会存储它们,还会为他们建立索引,这样你就可以搜索他们了。你可以在 Elasticsearch 中索引、搜索、排序和过滤这些文档。不需要成行成列的数据。这将会是完全不同的一种面对数据的思考方式,这也是为什么 Elasticsearch 可以执行复杂的全文搜索的原因。

ES特性:

  支持Restful,大量的Restful api

  json风格

  分布式索引和搜索
  天然支持shard,replication

  高性能,易扩展,使用简单

二、Basic Concepts

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

2.1 Document

{
    "name":         "John Smith",
    "age":          42,
    "confirmed":    true,
    "join_date":    "2014-06-01",
    "home": {
        "lat":      51.5,
        "lon":      0.1
    },
    "accounts": [
        {
            "type": "facebook",
            "id":   "johnsmith"
        },
        {
            "type": "twitter",
            "id":   "johnsmith"
        }
    ]
}

 在Elasticsearch中,文档这个单词有特殊的含义。它指的是在Elasticsearch中被存储到唯一ID下的由最高级或者根对象 (root object )序列化而来的JSON.

 除了数据信息,ES中还存有文档的元数据信息—— 关于文档的信息,下面是3个必须的元数据信息

_index:: Where the document lives

_type:: The class of object that the document represents

_id:: The unique identifier for the document

(1) _index

  类似于传统数据库中的"库"-存储并且索引数据的地方

  在ES中,我们的数据都在分片中被存储以及索引,索引是一个逻辑命名空间,它可以将一个或者多个分片组合在一起。

(2) _type

  在ES中我们使用同样_type的文档来代表同类,因为它们的数据结构是相同的

  每一个类型都有自己的mapping或者结构定义,它们定义了当前类型的数据结构,类似于数据表中的列。

    Documents of all types can be stored in the same index, but the mapping for type tell ES how the data in each document should be indexed.

(3) _id

  id是一个字符串,当它与_index以及_type组合时,就可以来代表Elasticsearch中一个特定的文档。我们创建了一个新的文档时,你可以自己提供一个_id,或者也可以让Elasticsearch帮你生成一个

2.2  Index

文档通过索引API被索引——存储并使其可搜索。但是最开始我们需要决定我们将文档存储在哪里。正如之前提到的,一篇文档通过_index_type以及_id来确定它的唯一性。

如果我们的索引叫做"website",我们的类型叫做 "blog",然后我们选择"123"作为ID的编号。这时,请求就是这样的:

PUT /website/blog/123
{
  "title": "My first blog entry",
  "text":  "Just trying this out...",
  "date":  "2014/01/01"
}

Elasticsearch返回内容:

{
   "_index":    "website",
   "_type":     "blog",
   "_id":       "123",
   "_version":  1,
   "created":   true
}

2.3 Cluster Replication Shard

  ES的集群标识为集群为名称:默认为"elasticsearch"。节点通过名字来判定加入哪一个集群。一个节点属于一个集群。

  分片(shard) 是 工作单元(worker unit) 底层的一员,它只负责保存索引中所有数据的一小片。在 elasticsearch 中,分片用来分配集群中的数据。把分片想象成一个数据的容器。数据被存储在分片中,然后分片又被分配在集群的节点上。当你的集群扩展或者缩小时,elasticsearch 会自动的在节点之间迁移分配分片,以便集群保持均衡。

  片分为 主分片(primary shard) 以及 从分片(replica shard) 两种。在你的索引中,每一个文档都属于一个主分片,所以具体有多少主分片取决于你的索引能存储多少数据。从分片只是主分片的一个副本,它用于提供数据的冗余副本,在硬件故障时提供数据保护,同时服务于搜索和检索这种只读请求。

索引中的主分片的数量在索引创建后就固定下来了,但是从分片的数量可以随时改变。

2.4 mapping field source field

  映射类似于数据库中的表结构,每一个索引都有一个映射,它定义了每一个字段类型,以及一个索引范围内的设置。一个映射可以被事先定义,如果没有事先定义,也存储文档的时候ES也会尝试进行自动识别。

  mapping机制也被ES用于字段分析,每个字段都有一种确定的类型

  field(字段)则非常好理解,类似于MySQL中列的概念,每个field都有一个类型,这个关系被定义在mapping中。重要的是,ES中,每一个字段都会被索引,因此其查询能力非常的强。

  source field:默认情况下,document的原始内容被存储在_source中,查询的时候返回的是一个精确的json字符串。

2.5 node

  节点指的集群中的某一个ES服务器,一个节点是一个逻辑上独立的服务,它是集群的一部分。

  每个cluster都有一个master node,这是由ES管理的。

  master用于管理集群的变更,例如新建或者删除索引,增加或者移除节点等。master node不会参与文档级别的变更或者搜索,这意味着在流量增长的时候,该主节点不会成为集群的瓶颈。

三、install

依赖于jdk,依赖于java的都好安装,直接解压或者rpm包都可以,略

集群搭建也很简单,一般的方式,同步时间,无ssh密钥通信等.

其配置文件解释的非常详细...

systemctl daemon-reload

systemctl start elasticsearch.service

如果出错JAVA_HOME找不到,可以在/etc/sysconfig/elasticsearch中指定环境变量JAVA_HOME

install plugin:

插件集地址: http://www.kailing.pub/article/index/arcid/87.html

  插件扩展的功能:

    添加自定义的映射类型、自定义分词器、本地脚本、自定义节点发现方式

  安装:

    直接将plugin放置于插件目录

    使用命令plugin

先安装一些常用的插件:

1. 安装Head,免费

  ./plugin install mobz/elasticsearch-head

2. 安装marvel,收费的,但是官方推荐...

3. 安装分词器ik

  https://github.com/medcl/elasticsearch-analysis-ik上有源码,因此可以使用源码安装

时间: 2024-10-24 14:44:23

ElasticSearch 基础(1) - 简介的相关文章

Elasticsearch 基础笔记

资料篇 主站 中文指南 基础篇 简介 Elasticsearch是一个使用JAVA开发,基于Apache Lucene(TM)的开源搜索引擎. 分布式的实时文件存储,每个字段都被索引并可被搜索 分布式的实时分析搜索引擎 可以扩展到上百台服务器,处理PB级结构化或非结构化数据 索引(_index) ES中索引概念的区分 索引(名词) 它是相关文档存储的地方,一个索引(index)就像是传统关系数据库中的数据库. 索引(动词) 「索引一个文档」表示把一个文档存储到索引(名词)里,以便它可以被检索或者

【Machine Learn】机器学习及其基础概念简介

机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结合视频学习和书籍基础的笔记所得.本系列文章将采用理论结合实践方式编写.首先介绍机器学习和深度学习的范畴,然后介绍关于训练集.测试集等介绍.接着分别介绍机器学习常用算法,分别是监督学习之分类(决策树.临近取样.支持向量机.神经网络算法)监督学习之回归(线性回归.非线性回归)非监督学习(K-means聚

PL/SQL 基础知识简介

1.PL/SQL代码块 PL/SQL 代码块是指令的集合,支持所有的DML,NDS,DBMS_SQL,DDL. :DML 是数据操纵语言(Data Manipulation Language)包括,Insert ,update,delete : DDL是数据定义语言(Data Definition Language ),包括,Alter,create,drop,truncate,Grant,revoke : NDS本地动态SQL(Native Dynamic SQL) 2.PL/SQL代码块结构

Razor基础语法简介

原文:Razor基础语法简介 Razor的出现,使页面看起更加简洁,Razor的页面后缀为:.cshtmlRazor基础语法:1.代码注释:      多行注释: @*注释信息*@     单行注释: // 注释 1.代码体{...} @{ var x=100; var y=100; string str="this is string": } 在代码体中,没一行都需要用";"结束,代码区中,字母区分大小写.字符类型常量必须用""括起来,2. 由

Java基础类库简介

Java基础类库简介 一.常用的基础类库:11个jar(Java Archive,Java归档)包 作为java语言使用者,我们可以感受到java语言带来的优势(平台无关.面向对象.多线程.高效易扩展等),而且它有很多已经实现的类库可以供我们直接使用,这些类库都是以jar包的形式提供的,也可以成为java API,它为编程者实现了各种常用操作的方法,为程序员编写java程序代码带来了许多方便. 作为初学者,我觉得熟练掌握和应用java基础类库是很有必要的.因此,总结了一些自己在初学java时的一

SpringCloud(1) 架构演进和基础知识简介

一.传统架构演进到分布式架构 简介:讲解单机应用和分布式应用架构演进基础知识 (画图) 高可用 LVS+keepalive 1.单体应用:开发速度慢.启动时间长.依赖庞大.等等 2.微服务:易开发.理解和维护.独立的部署和启动等等 不足:分布式系统(分布式事务问题).需要管理多个服务(服务治理) 二.微服务基础知识简介 微服务核心知识 :网关.服务发现注册.配置中心.链路追踪.负载均衡器.熔断 1.网关:路由转发 + 过滤器 /api/v1/pruduct/       商品服务 /api/v1

ELK(elasticsearch+kibana+logstash)搜索引擎(二): elasticsearch基础教程

1.elasticsearch的结构 首先elasticsearch目前的结构为 /index/type/id  id对应的就是存储的文档ID,elasticsearch一般将数据以JSON格式存储.我们可以将elasticsearch和关系型数据库进行比较,index相当于关系型数据库中的database,type相当于table,而id就相当于表中的主键,elasticsearch中一个文档存储的一个json则能视为是关系型数据库中一张表的一行数据,而ID就是他的主键,在理解了es的存储结构

elasticsearch系列一:elasticsearch(ES简介、安装&配置、集成Ikanalyzer)

一.ES简介 1. ES是什么? Elasticsearch 是一个开源的搜索引擎,建立在全文搜索引擎库 Apache Lucene 基础之上 用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API. Elasticsearch 不仅仅只是一个全文搜索引擎. 它可以被下面这样准确的形容: 一个分布式的实时文档存储,每个字段可以被索引与搜索--作数据库用 一个分布式实

elasticsearch系列一elasticsearch(ES简介、安装&配置、集成Ikanalyzer)

一.ES简介 1. ES是什么? Elasticsearch 是一个开源的搜索引擎,建立在全文搜索引擎库 Apache Lucene 基础之上 用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API. Elasticsearch 不仅仅只是一个全文搜索引擎. 它可以被下面这样准确的形容: 一个分布式的实时文档存储,每个字段可以被索引与搜索--作数据库用 一个分布式实