Elasticsearch入门教程:索引和文档操作

Elasticsearch 是一个高伸缩的开源全文搜索和分析引擎。它可以快速地、近实时的存储,搜索和分析大规模的数据。一般被用作底层引擎/技术,为具有复杂搜索功能和要求的应用提供强有力的支撑。

Elasticsearch 能够被用在这些地方:

假设有一个在线的商店网站,为了让客户搜索到销售的产品。在这种情况下,可以使用 Elasticsearch 来存储你的整个产品目录和库存,并提供搜索以及自动给他们一些建议。

假设想要收集日志或者交易数据,通过分析、挖掘来寻找趋势,统计,总结或异常。在这种情况下,可以使用 LogStashElasticsearch/Logstash/Kibana栈的一部分)去收集、汇总并解析你的数据,然后通过 LogStash 把这些数据递交给 Elasticsearch 。一旦 Elasticsearch 取得了数据,你就可以进行搜索并且聚合你感兴趣的信息。

假设运行一个价格提醒平台,让价格精明的客户指定一个规则,如“我有兴趣购买一个特定的电子小配件,如果下个月内,有卖家的价格低于$x,我想得到通知”。在这种情况下,你可以把卖家的价格递交到 Elasticsearch ,使用反向搜索(过滤器),将价格变动与客户查询进行匹配,一旦发现匹配结果,则通知客户。

假设有分析(商业智能)需求,希望快速调查,分析,可视化和在大量(考虑百万或十亿条记录)的数据中查找一个特设的问题。在这种情况下,你可以使用 Elasticsearch 储存数据,然后使用  Kibana ( Elasticsearch 栈的一部分)构建自定义仪表板,以便可视化对你重要的数据。另外,你可以使用 Elasticsearch 聚合功能,依靠数据执行复杂的商业智能查询。

对于本教程的其余部分,会通过 Elasticsearch 的启动和运行过程指导你初步认识它,并展示一些基本的操作,比如:索引,搜索和修改数据。本教程的结束后,你将会对 Elasticsearch 是什么以及它的工作原理有了较深的认识。希望你能受到启发,既能使用它建立复杂的搜索应用程序又能从你的数据中发掘有用的东西。

官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

Elasticsearch 版本:5.4

基本概念(Basic Concepts)

有一些概念是Elasticsearch 的核心从一开始就理解这些概念将大大有助于以后的学习。

近实时(NRT)

Elasticsearch 是一个接近实时的搜索平台。这意味着从将文档索引的时间到变得可搜索的时间只有轻微的延迟(通常为1秒)。

集群(Cluster)

集群是一个或多个节点(服务器)的集合,它们联合起来保存所有的数据,并且可以在所有的节点上进行索引和搜索操作。集群由唯一的名称标识,默认是"elasticsearch"。由于一个节点仅仅可以属于一个集群,并根据集群名称加入集群。所以该名字很重要。

不要在不同的环境中使用一样的集群名字,否则可能会导致加入错误的集群。例如,你可以分别在开发,过渡,生产环境中使用集群名称, logging-dev , logging-stage 和 logging-prod  。

注意,只有一个节点的集群是有效和完美的。也可以拥有多个独立的集群,每个集群都有自己独特的集群名称。

节点(Node)

节点是一个单一的服务器,是集群的一部分,存储数据,并参与集群的索引和搜索。和集群一样,节点也是通过唯一的名字去区分,默认名字是一个随机的UUID(Universally Unique IDentifier),当服务器启动的时候就会设置到该节点。如果不想使用默认值,你也可以自定义节点的名称。名称对管理员来说十分重要,它可以帮助你区分出集群中的各个服务器和哪些节点相对应。

节点通过配置集群的名称,就可以加入到指定的集群。默认情况下,节点都加入一个叫  elasticsearch 的集群,这意味着如果你在网络中启动了大量的节点并且假如他们都能互相通讯的话,那么他们将会被自动的加入一个名字叫  elasticsearch 的集群。

索引(Index)

索引是具有某种相似特征的文档的集合。例如,客户数据索引,产品目录索引,以及订单数据索引。索引由名称(必须全部为小写)标识,此名称用于在对文档进行索引、搜索、更新和删除操作时使用。在单个集群中,您可以根据需要定义任意数量的索引。

类型(Type)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ffc97538709b1bc12f8340e676a92b3a.html