007-elasticsearch【一】概述、Elasticsearch 访问方式、Elasticsearch 面向文档、常用概念

一、概述

  Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。

  Elasticsearch 也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目标是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。

然而,Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎。 它可以被下面这样准确的形容:

  一个分布式的实时文档存储,每个字段 可以被索引与搜索
  一个分布式实时分析搜索引擎
  能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据
  Elasticsearch 将所有的功能打包成一个单独的服务,这样你可以通过程序去访问它提供的简单的 RESTful API 服务, 不论你是使用自己喜欢的编程语言还是直接使用命令行(去充当这个客户端)。

二、Elasticsearch 访问方式

2.1、Java API

如果你正在使用 Java,在代码中你可以使用 Elasticsearch 内置的两个客户端:

节点客户端(Node client)
  节点客户端作为一个非数据节点加入到本地集群中。换句话说,它本身不保存任何数据,但是它知道数据在集群中的哪个节点中,并且可以把请求转发到正确的节点。
传输客户端(Transport client)
  轻量级的传输客户端可以可以将请求发送到远程集群。它本身不加入集群,但是它可以将请求转发到集群中的一个节点上。
两个 Java 客户端都是通过 9300 端口并使用本地 Elasticsearch 传输 协议和集群交互。集群中的节点通过端口 9300 彼此通信。如果这个端口没有打开,节点将无法形成一个集群。

  Java 客户端作为节点必须和 Elasticsearch 有相同的 主要 版本;否则,它们之前将无法互相理解。

更多客户端信息访问

2.2、RESTful API with JSON over HTTP

  所有其他语言可以使用 RESTful API 通过端口 9200 和 Elasticsearch 进行通信,你可以用你最喜爱的 web 客户端访问 Elasticsearch 。事实上,正如你所看到的,你甚至可以使用 curl 命令来和 Elasticsearch 交互。

三、Elasticsearch 面向文档

  Elasticsearch 是 面向文档 的,意味着它存储整个对象或 文档_。Elasticsearch 不仅存储文档,而且 _索引每个文档的内容使之可以被检索。在 Elasticsearch 中,你 对文档进行索引、检索、排序和过滤--而不是对行列数据。这是一种完全不同的思考数据的方式,也是 Elasticsearch 能支持复杂全文检索的原因。

3.1、内部json化

  Elasticsearch 使用 JavaScript Object Notation 或者 JSON 作为文档的序列化格式。JSON 序列化被大多数编程语言所支持,并且已经成为 NoSQL 领域的标准格式。 它简单、简洁、易于阅读。

四、常用概念

4.1、near realtime【NRT】

  Elasticsearch是一个接近实时的搜索平台。这意味着从索引文档的时间到可搜索的时间之间存在轻微的延迟(通常为一秒)。

4.2、Cluster集群

  群集是一个或多个节点(服务器)的集合。集群由默认名称为“elasticsearch”的唯一名称标识。此名称很重要,因为如果节点设置为通过名称加入群集,则节点只能成为群集的一部分。

4.3、Node节点

  节点是属于集群一部分的单个服务器,存储数据并参与集群的索引和搜索功能。

4.4、Index索引【相当于关系DB中的数据库】

  索引是一些具有相似特征的文档集合。例如,您可以拥有客户数据的索引,产品目录的另一个索引以及订单数据的另一个索引。索引由名称(必须全部为小写)标识,并且此名称用于在对其中的文档执行索引,搜索,更新和删除操作时引用索引。

  在单个群集中,您可以根据需要定义多个索引。

4.5、Type类型【相当于关系DB中的数据表】

  在索引内,您可以定义一个或多个类型。类型是您的索引的逻辑类别/分区,其语义完全取决于您。通常,为具有一组公共字段的文档定义类型。

4。6、Document文档【相当于关系DB中的数据行】

  文档是可被索引的基本信息单位。例如,您可以为单个客户提供文档,为单个产品提供另一个文档,为单个订单提供另一个文档。文档以JSON(JavaScript Object Notation)表示。

  在索引/类型中,您可以根据需要存储任意数量的文档。请注意,尽管文档实际上驻留在索引中,但实际上文档必须被索引/分配给索引内的类型。

4.7、分片和副本

  参看地址:查看

原文地址:https://www.cnblogs.com/bjlhx/p/8507530.html

时间: 2024-12-10 18:42:45

007-elasticsearch【一】概述、Elasticsearch 访问方式、Elasticsearch 面向文档、常用概念的相关文章

ElasticSearch 面向文档性

在应用程序中对象很少只是一个简单的键和值的列表.通常,它们拥有更复杂的数据结构,可能包括日期.地理信息.其他对象或者数组等. 也许有一天你想把这些对象存储在数据库中.使用关系型数据库的行和列存储,这相当于是把一个表现力丰富的对象挤压到一个非常大的电子表格中:你必须将这个对象扁平化来适应表结构--通常一个字段>对应一列--而且又不得不在每次查询时重新构造对象. Elasticsearch 是 面向文档 的,意味着它存储整个对象或 文档_.Elasticsearch 不仅存储文档,而且 _索引每个文

〈二〉ElasticSearch的认识:索引、类型、文档

目录 上节回顾 本节前言 索引index 创建索引 查看索引 查看单个索引 查看所有索引 删除索引 修改索引 修改副本分片数量 关闭索引 索引别名 增加索引别名: 查看索引别名: 删除索引别名: 补充 小节总结: 类型type 补充: 小节总结: 文档document 插入文档 查询指定文档 更新文档 删除文档 查询所有文档 补充: 小节总结 发表日期:2019年9月19日 上节回顾 在学习新的内容之前,先回顾一下上节的内容,上节主要讲述了以下的内容: ElasticSearch是什么?什么是搜

MongoDB实战-面向文档的数据(找到最合适的数据建模方式)

前一段时间一直研究通过Ruby操作MongoDB数据库,在学习的过程中也分享了自己学习成长的过程,撰写了包含两篇入门操作文章和十二篇进阶文章.本篇文章开始,我们将进入MongoDB的实战操作流程,MongoDB这一非关系型数据库-是一个文档型数据库,存储的是面向文档的数据. 如何在MongoDB数据库中使用schema 设计数据库schema是在已知数据库系统特性.数据本质以及应用程序需求的情况下为数据集选择最佳表述的过程.传统的关系型数据库RDBMS中鼓励使用正规化的数据模型,从而确保数据的可

javaweb学习总结十三(dom4j方式对XML文档进行解析)

一:dom4j方式介绍 对于xml的解析总共有三种 1:jaxp方式,是sun公司开发的,分为sax方式和dom方式 2:jdom方式,后来其中部分人员参与开发dom4j 3:dom4j方式,是现在企业使用比较多的一种方式 二:代码案例 1:读取xml文件中某个节点 1):获取第二个学生的名字 1 @Test 2 // 1:获取第二个学生的名字 3 public void test01() throws DocumentException { 4 // 1:获取解析器 5 SAXReader r

XML DOM (Document Object Model) 定义了访问和操作 XML 文档的标准方法。

XML DOM DOM 把 XML 文档视为一种树结构.通过这个 DOM 树,可以访问所有的元素.可以修改它们的内容(文本以及属性),而且可以创建新的元素.元素,以及它们的文本和属性,均被视为节点. 在本教程的较早章节中,我们介绍了 XML DOM,并使用了 XML DOM 的 getElementsByTagName() 从 DOM 树中取回数据. 在本节中,我们将讲解一些其他较常用的 XML DOM 方法.在本例中,我们使用 XML 文件 books.xml,并使用一个 JavaScript

怎样以快速样式的方式在word文档中生成以下多级自动编号

本篇博文简单介绍一下在word中利用快速样式生成多级编号的方法. 一.自定义多级列表格式: 1.点击,开始--段落--多级列表--定义新的多级列表: 2.设置一级编号: (1)在"此级的编号格式"中选择,"1,2,3.....": (2)在"输入编号的格式"中"1"的前后分别输入"第"和"章": (3)设置相应的格式: 3.设置二级编号: (1)在"包含的级别编号来自"

通过 JDOM 方式生成 XML 文档

1.引入jdom jar包 2.代码 Element ele = new Element("tree"); ele.setAttribute("id","0"); Document document = new Document(ele); Element e1 = new Element("name"); e1.setText("名称"); ele.addContent(e1); // Format fo

elasticsearch系列三:索引详解(分词器、文档管理、路由详解)

一.分词器 1. 认识分词器  1.1 Analyzer   分析器 在ES中一个Analyzer 由下面三种组件组合而成: character filter :字符过滤器,对文本进行字符过滤处理,如处理文本中的html标签字符.处理完后再交给tokenizer进行分词.一个analyzer中可包含0个或多个字符过滤器,多个按配置顺序依次进行处理. tokenizer:分词器,对文本进行分词.一个analyzer必需且只可包含一个tokenizer. token filter:词项过滤器,对to

elasticsearch 路由文档到分片

路由文档到分片 当你索引一个文档,它被存储在单独一个主分片上.Elasticsearch是如何知道文档属于哪个分片的呢?当你创建一个新文档,它是如何知道是应该存储在分片1还是分片2上的呢? 进程不能是随机的,因为我们将来要检索文档.事实上,它根据一个简单的算法决定: shard = hash(routing) % number_of_primary_shards routing值是一个任意字符串,它默认是_id但也可以自定义.这个routing字符串通过哈希函数生成一个数字,然后除以主切片的数量