我们要做的第一件事是安装ElasticSearch。对于多数应用程序,您开始安装和配置,通常忘记这些步骤的重要性,直到发生了糟糕的事情。这章我们将广泛关注ElasticSearch的这部分。请注意本章不是对每一个配置选项和参数的明确指导。当然,我们愿意完整描述他们,但是如果我们那样做了,我们将不得不再写一本书(甚至更多)。除此之外,ElasticSearch就像现在所有其他可用的应用软件程序-它每天不断发生变化。我们只介绍 我们认为需要的部分、以及特定功能,有时难以理解或太宽泛。在一个地方描述将节省您的一些时间。通过本章,你将学到以下:

  1. ElasticSearch的基本概念
  2. 如何安装和配置您的集群
  3. 使用ElasticSearch REST API
  4. 如何创建索引
  5. 如何配置映射
  6. 如何使用动态映射
  7. 什么是模板以及如何使用它
  8. 路由是什么以及如何使用它
  9. 如何使用索引别名

ElasticSearch是什么?

ElasticSearch 是一个由Shay Banon在2010年2月发布的开源的搜索服务器项目,此项目发展成一个在搜索领域的主要解决方案。此外,由于其分布式特性和实时的能力,许多人把它作 为一个文档数据库。让我们浏览一下ElasticSearch的基本概念。

索引(Index)

索 引是ElasticSearch存储数据的地方。如果您来自关系数据库的世界,您能想到的是一个索引表。但相对于关系数据库,表的值存储在索引中是快速和 高效的,尤其是全文搜索,不需要存储原始值。如果您知道MongoDB,您可以认为ElasticSearch的索引就像MongoDB的集合;如果您熟 悉CouchDB可以想像跟CouchDB数据库索引一样。

文档(Document)

ElasticSearch中存储的主要实体是一个文档。类比关系数据库,一个文档是一个数据表中的一行数据。比较一下ElasticSearch文档和MongoDB,都可以有不同的结构,但在ElasticSearch中需要有相同的字段类型。

文档包含字段列(行),但每个字段可能出现多次,这样的字段被称为:MultiValued(多值)。 每个字段都有类型(文本、数字、日期等等)。字段类型也可以是复合的-一个字段可以包含其它子文档或数组。ElasticSearch的字段类型是很重要 的-它给予搜索引擎如何进行各种操作如比较或排序被执行的信息。幸运的是,这可以自动确定。跟关系数据库不同的是,文档不需要固定的结构,每个文档可能有 一组不同的字段,除此之外,在开发应用程序时不必知道字段。当然,可以强迫一个文档结构的使用模式。

文档类型(Document Type)

在 ElasticSearch中,一个索引可以存储不同用途的对象。例如,一个博客应用程序可以存储文章和评论。文档类型可以让我们很容易区分这些对象。值 得注意的是,几乎所有的文档可以有不同的结构,但是在实际操作的时候,将它划分为类型明显有助于数据操作。当然,需要考虑到局限性。这样的一个限制就是不 同的文档类型不能为同一属性设置不同类型。

节点和集群(Node and Cluster)

ElasticSearch 可以作为单个搜索服务器独立工作。然而,为了能够处理大型数据集、实现容错,ElasticSearch可以在许多协同服务器上运行。所有的这些服务器被 称为一个集群,并且每一台服务器被称为一个节点。大量数据可以通过索引分片来跨越许多节点(分裂成更小的各个部分)。更好的可用性和性能通过副本(索引部 分副本)来实现。

分片(Shard)

当我们有大量的文档,但由于内存限制、硬盘容量等等原因,单个节点是不够的。另一个 问题是,需要的功能是如此的复杂,服务器计算能力是不够的。在这种情况下,数据可以划分为更小的部分这称为“分片”。每个分片都是一个独立的Apache Lucene索引。每一个分片都可以放在不同的服务器,因此您的数据可以散布在集群。当您从多个分片查询索引,ElasticSearch将查询发送到每 个相关分片并透明的合并结果集,所以您的应用程序不需要了解分片。

Replica(副本)

为了增加查询吞吐量或实现高可用性,可以使用分片副本。主分片用于直接更改索引操作,副本只是主分片的一个精确复制,并且每个分片都可以有零个或多个副本。当主分片丢失(例如,服务器的分片数据不可用),集群可以提升一个副本成为新的主分片。

翻译【ElasticSearch Server】第一章:开始使用ElasticSearch集群(1)的更多相关文章

  1. 使用mod_cluster进行apache httpd server和jboss eap 6.1集群配置

    本文简单介绍,使用mod_cluster进行apache httpd server和jboss eap 6.1集群配置.本配置在windows上测试通过,linux下应该是一样的.可能要稍作调整.后面 ...

  2. CentOS6安装各种大数据软件 第四章:Hadoop分布式集群配置

    相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...

  3. CentOS6安装各种大数据软件 第六章:HBase分布式集群的配置

    相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...

  4. 《Entity Framework 6 Recipes》翻译系列 (1) -----第一章 开始使用实体框架之历史和框架简述

    微软的Entity Framework 受到越来越多人的关注和使用,Entity Framework7.0版本也即将发行.虽然已经开源,可遗憾的是,国内没有关于它的书籍,更不用说好书了,可能是因为EF ...

  5. 《Entity Framework 6 Recipes》翻译系列(2) -----第一章 开始使用实体框架之使用介绍

    Visual Studio 我们在Windows平台上开发应用程序使用的工具主要是Visual Studio.这个集成开发环境已经演化了很多年,从一个简单的C++编辑器和编译器到一个高度集成.支持软件 ...

  6. Elasticsearch学习系列七(Es分布式集群)

    核心概念 集群(Cluster) 一个Es集群由多个节点(Node)组成,每个集群都有一个共同的集群名称作为标识 节点(Node) 一个Es实例就是一个Node.Es的配置文件中可以通过node.ma ...

  7. Elasticsearch 6.x版本全文检索学习之集群调优建议

    1.系统设置要到位,遵照官方建议设置所有的系统参数. https://www.elastic.co/guide/en/elasticsearch/reference/6.7/setup.html 部署 ...

  8. 第十四章 二进制部署k8s集群的平滑升级

    1.软件包下载 去github上下载较新的Kubernetes软件包https://github.com/ 2.升级说明 升级包括master节点升级和node节点的升级,本章升级至v1.15.12: ...

  9. Service Broker应用(2):不同server间的数据传输,包含集群

    不同Server之间的数据传输,包含DB使用AlwaysOn 配置脚本: SQL Server Service Broker 跨集群通信 具体的TSQL 脚本语句如下.注意的是TSQL语句是在发送方还 ...

  10. 使用Rancher Server部署本地多节点K8S集群

    当我第一次开始我的Kubernetes之旅时,我一直在寻找一种设置本地部署环境的方式.很多人常常会使用minikube或microk8s,这两者非常适合新手在单节点集群环境下进行操作.但当我已经了解了 ...

随机推荐

  1. CentOS中基于不同版本安装重复包的解决方案

    http://blog.chinaunix.net/uid-21710705-id-3039675.html

  2. [PHP]如何在百度(BAE)和新浪(SAE)的云平台使用PHP连接MySQL并返回结果数据

    <?php $dbname = 'VnOTxPFWoxzUBLtrQCCg'; $host = getenv('HTTP_BAE_ENV_ADDR_SQL_IP'); $port = geten ...

  3. linux网站推荐

    推荐几个Liux中文学些网站. http://www.chinaunix.net/http://linux.cn/http://www.linuxidc.com/

  4. 解决在windows的eclipse上面运行WordCount程序出现的一系列问题详解

    一.简介 要在Windows下的 Eclipse上调试Hadoop2代码,所以我们在windows下的Eclipse配置hadoop-eclipse-plugin- 2.6.0.jar插件,并在运行H ...

  5. Project Euler 86:Cuboid route 长方体路径

    Cuboid route A spider, S, sits in one corner of a cuboid room, measuring 6 by 5 by 3, and a fly, F, ...

  6. *[hackerrank]Lexicographic paths

    https://www.hackerrank.com/contests/w9/challenges/lexicographic-steps 这题还是折腾很久的.题目意思相当于,比如有两个1两个0,那么 ...

  7. 【Linux高频命令专题(18)】tail

    概述 tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但 ...

  8. eclipse怎么集成配置JDK和Tomcat

    eclipse怎么集成配置JDK和Tomcat_电脑软件_百度经验http://jingyan.baidu.com/album/db55b609ab6a1f4ba30a2f2c.html?picind ...

  9. 枚举桌面应用程序lnk路径并得到对应程序的绝对路径(使用SHGetDesktopFolder函数枚举,然后使用COM查询IShellFolder,IShellLink和IPersistFile接口)

    // 枚举桌面上应用程序的lnk路径 void EnumDesktopLnkPath() { WCHAR szPath[MAX_PATH] = {0}; SHGetSpecialFolderPathW ...

  10. iOS 用命令实现简单的打包过程

    `xcode-select --print-path`/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication // 获得打包 ...