zoukankan      html  css  js  c++  java
  • 第19篇-Kibana对Elasticsearch的实用介绍

    我的Elasticsearch系列文章,逐渐更新中,欢迎关注
    0A.关于Elasticsearch及实例应用
    00.Solr与ElasticSearch对比
    01.ElasticSearch能做什么?
    02.Elastic Stack功能介绍
    03.如何安装与设置Elasticsearch API
    04.如果通过elasticsearch的head插件建立索引_CRUD操作
    05.Elasticsearch多个实例和head plugin使用介绍

    06.当Elasticsearch进行文档索引时,它是怎样工作的?

    07.Elasticsearch中的映射方式—简洁版教程

    08.Elasticsearch中的分析和分析器应用方式

    09. Elasticsearch中构建自定义分析器

    10.Kibana科普-作为Elasticsearhc开发工具
    11.Elasticsearch查询方法

    12.Elasticsearch全文查询

    13.Elasticsearch查询-术语级查询

    14.Python中的Elasticsearch入门

    15.使用Django进行ElasticSearch的简单方法

    16.关于Elasticsearch的6件不太明显的事情
    17.使用Python的初学者Elasticsearch教程
    18.用ElasticSearch索引MongoDB,一个简单的自动完成索引项目
    19.Kibana对Elasticsearch的实用介绍
    20.不和谐如何索引数十亿条消息
    21.使用Django进行ElasticSearch的简单方法

    另外Elasticsearch入门,我强烈推荐ElasticSearch新手搭建手册和这篇优秀的REST API设计指南 给你,这两个指南都是非常想尽的入门手册。

    什么是Elasticsearch
    Elasticsearch是一个高度可扩展的开源搜索引擎。它使您可以实时地保留和分析大量信息。
    Elasticsearch使用JSON文档文件。使用内部结构,它可以几乎实时地解析您的数据以搜索所需的信息。
    在处理大数据时非常有用。

    定义和其他东西
    有关Elasticsearch的一些技术(但有用)信息是:
    ● 它是一个实时的分布式分析引擎。
    ● 它是开源的,用Java开发。
    ● 它使用基于文档的结构而不是表和架构。
    我发现的最大好处是速度和可伸缩性。它以允许查询真正快速的方式实现。关于可伸缩性,它可以在您的笔记本电脑或数以PB计的数据的数百台服务器中运行。

    除了速度和可伸缩性之外,它还具有与故障相关的高弹性,并且在数据类型方面具有很高的灵活性。

    同样,Elasticsearch对大数据非常有用,可以轻松地在几乎实时的搜索中分析数百万个数据。这就是Elasticsearch的魔力。

    但是,您如何搜索所有这些数据?为此,您使用查询。

    查询:执行和组合多种类型的搜索(例如结构化,非结构化,地理,度量等)的语言。您可以“无论如何都要”进行查询。

    关于分析,Elasticsearch使您可以轻松了解数十亿条日志行。它提供了汇总,可帮助您缩小范围以探索数据中的趋势和模式。

    例如,如果您有一个具有500个节点的云,则可以在短时间内分析整个基础架构,将日志导入Elasticsearch,然后根据其响应,找出导致基础架构出现问题的根本原因。

    其他使用示例:
    ● 显示具有特定值的数据。例如:从数据库中显示所有23岁的用户。
    ● 选择具有特定值的数据按地理位置搜索数据
    ● 地理搜索按天汇总数据

    客户群
    Elasticsearch非常有趣,以至Mozilla,GitHub,Stack Exchange,Netflix和更多用户使用它。
    动手
    既然您已经对Elasticsearch有所了解,那么我们来看这个故事的实际部分。
    安装

    要执行Elasticsearch,您必须:
    安装Java:版本应为8或更高。
    安装Elasticsearch:并按照以下步骤在您的操作系统中进行安装。如果您安装了装有Homebrew的MacOS,则只需输入以下内容即可安装

    brew install elasticsearch
    接口
    要使用Elasticsearch,您将需要一个接口。在这个故事中,我将使用Kibana(一个很棒的Web界面)来可视化和操纵Elasticsearch的数据。

    可以在elastic.co中下载并按照此处介绍的步骤进行安装,或者通过以下命令使用Homebrew:
    brew install kibana

    您需要为Elasticsearch和Kibana下载相同的版本。
    将来,当您发现自己需要开发与Elasticsearch进行交互的软件时,可以使用编程语言与之交互。一些可接受的编程语言是:
    ● Java
    ● C#
    ● Python
    ● JavaScript
    ● PHP
    ● Perl
    ● Ruby
    基本概念
    好!现在您已经安装了Elasticsearch和Kibana。在开始使用它之前,让我们看一些有关Elasticsearch的有用概念。
    Elasticsearch是由


    群集是一个或多个节点的集合,这些节点一起保存整个数据。它在所有节点上提供联合索引和搜索功能,并由唯一名称标识(默认情况下为'/ elasticsearch'/)

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

    指数
    索引是具有相似特征的文档的集合,并由名称标识。此名称用于在对索引中的文档执行索引,搜索,更新和删除操作时引用索引。在单个群集中,您可以定义任意多个索引。

    文件
    文件是可以编制索引的基本信息单位。它以JSON表示,JSON是一种普遍存在的Internet数据交换格式。

    碎片
    Elasticsearch提供了将索引细分为多个碎片的功能。每个分片本身就是一个功能齐全且独立的“索引”,可以托管在群集内的任何节点上。当放置在单个节点中的索引占用的磁盘空间超过可用磁盘空间时,这很有用。然后,将索引细分为不同的节点。此外,分片允许您在各个分片之间分配和并行化操作,从而提高性能。

    复制品
    Elasticsearch允许您为索引的分片制作一个或多个副本,这些副本称为副本分片或副本。如果节点发生故障,它可以提供高可用性,并且由于可以在所有副本上并行执行搜索,因此可以扩展搜索量。
    执行中
    好吧,现在,让我们真正地动手吧。转到安装Elasticsearch的目录,然后通过终端执行该命令
    $ ./elasticsearch

    如果您是使用Homebrew安装的,请尝试输入
    elasticsearch

    终端。它可以启动Elasticsearch,而无需转到其目录。
    Elasticsearch开始现在,正在执行Elasticsearch,打开另一个终端窗口并执行Kibana,转到其目录并执行,
    $ ./kibana

    或者使用Homebrew,只需输入

    $ kibana
    Kibana开始了如果一切顺利,那么您将同时被执行。要进行验证,请打开网络浏览器,然后转到:
    http://localhost:9200
    http://localhost:9200

    结果表明Elasticsearch正在运行如果您看到与上述相似的结果,则表明Elasticsearch已启动并正在运行。
    要查看Kibana界面,请转到:
    http://localhost:5601

    位于http:// localhost:5601的Kibana界面
    如果一切都如上所示,现在让''播放一些数据。
    指令
    在Kibana界面中,选择左侧菜单上的开发工具。您将看到一个左侧的控制台来键入命令,而右侧的控制台来查看结果。
    让我们看看可用于操作数据的命令。

    PUT命令允许您将新文档数据插入Elasticsearch。在控制台中键入以下代码,按绿色的播放按钮,然后查看结果。

    PUT /my_playlist/song/6
    {
    "title" : "1000 years",
    "artist" : "Christina Perri",
    "album" : "Breaking Dawn",
    "year" : 2011
    }
    这意味着您只是将文档数据插入到Elasticsearch中。在此示例中,我们有
    /my_playlist/song/6

    其中:
    ● my_playlist:是要插入数据的索引的名称。
    ● song:是要创建的文档的名称。
    ● 6:元素实例的ID。在这种情况下,是歌曲ID。
    如果索引my_playlist尚不存在,则会创建该索引,就像文档歌曲和id 6一样。
    要更新值,请对同一文档使用相同的PUT命令。例如,如果要插入新的参数,位置,则可以通过以下方式进行:

    PUT /my_playlist/song/6
    {
    "title" : "1000 years",
    "artist" : "Christina Perri",
    "album" : "Breaking Dawn",
    "year" : 2011,
    "location" : "London"
    }
    结果应为
    得到
    GET命令允许您检索有关数据的信息。键入以下示例:
    GET / my_playlist / song / 6

    这将检索您刚刚插入的数据。
    删除
    要删除文档,您只需要使用以下命令:
    删除/ my_playlist / song / 6

    搜索数据
    好的,知道您知道一些命令。但是,它以非常简单的方式呈现。对此进行更深入的了解,可以执行更复杂的查询。
    有不同的Search API。为简单起见,我将仅提供一些简单的示

    要将数据集加载到Elasticsearch中,请打开终端,转到下载文件的目录,然后执行以下命令:

    curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary @accounts.json

    现在,您应该将帐户数据放入Elasticsearch。您可以尝试以下示例:
    URI搜索的简单示例
    从状态UT返回所有帐户。

    GET /bank/_search?q=state:UT

    从UT或CA返回所有帐户。

    GET /bank/_search?q=state:UT OR CA

    从状态TN和女性客户返回所有帐户。

    GET /bank/_search?q=state:TN AND gender:F

    退还20岁以上人士的所有帐户。

    GET /bank/_search?q=age:>20

    退还20至25岁之间的所有帐户。

    GET /bank/_search?q=age:(>=20 AND <=25)

    使用查询DSL的简单示例
    URI可能不是查询Elasticsearch的最佳方法。似乎最好使用QueryDSL。

    将查询DSL视为查询的AST(抽象语法树),它由两种子句组成:
    ● 叶子查询子句:它在特定字段中查找特定值,例如match,term或range查询。
    ● 复合查询子句:它包装其他叶查询或复合查询,并用于以逻辑方式组合多个查询(例如bool或dis_max查询),或更改其行为(例如constant_score查询)。
    查询子句的行为不同,取决于它们是在查询上下文中还是在过滤器上下文中使用:
    ● 查询上下文:查询上下文中使用的查询子句回答以下问题:“此文档与该查询子句的匹配程度如何?” 。答案是_score,代表文档相对于其他文档的匹配程度。
    ● 过滤器上下文:过滤器上下文中的查询子句回答问题“此文档是否与此查询子句匹配?”。答案是简单的是或否。
    以下是在搜索 API的查询和过滤器上下文中使用的查询子句的示例。此查询将匹配满足以下所有条件的文档:
    ● 该地址字段包含字街
    ● 在性别字段包含确切的词˚F
    ● 该年龄字段包含数大于或等于25

    GET / _search
    {
    “ query”:{// 1
    “ bool”:{// 2
    “ must”:[
    {“ match”:{“ address”:“ Street”}}} // 3
    ],
    “ filter”:[ // 4
    {“ term”:{“ gender”:“ f”}},// 5
    {“ range”:{“ age”:{“ gte”:25}}} // 6
    ]
    }
    }
    }
    子句用于查询上下文,这意味着它们用于对每个文档的匹配程度进行评分。
    // 4:该
    filter

    参数表示过滤器上下文。

    // 5和// 6:
    term和range

    子句在过滤器上下文中使用。它们将过滤出不匹配的文档,但不会影响匹配文档的分数。
    提示:在查询上下文中使用查询子句以应对可能影响匹配文档得分(即文档匹配程度)的条件,并在过滤器上下文中使用所有其他查询子句。

    现在,您对什么是Elasticsearch以及如何在其上插入,更新,删除和搜索数据有所了解。Kibana具有更多查看数据的功能,包括将其显示为不同的图形。我建议您探索所有这些。
    关于Elasticsearch的更多信息。根据我在与Elasticsearch的第一次接触中对这些主题的了解,在此介绍的内容只是开始了解它的第一步。阅读此故事后,您应该探索Kibana界面,Elasticsearch文档,如何创建更复杂的查询等等。
    我希望这个故事对您初次接触Elasticsearch有帮助,现在您可以轻松阅读其他教程和文档。
    感谢您的阅读并祝您学习顺利:)

  • 相关阅读:
    紫书 例题8-18 UVa 1442 (扫描法)
    紫书 例题8-17 UVa 1609 (构造法)(详细注释)
    紫书 例题8-16 UVa 1608 (递归)
    紫书 例题8-15 UVa 12174 (滑动窗口)
    紫书 例题8-14 UVa 1607 (二分)
    紫书 例题8-13 UVa 11093 (反证法)
    紫书 例题8-12 UVa 12627 (找规律 + 递归)
    Codeforces Round #441 (Div. 2, by Moscow Team Olympiad)
    CodeForces
    CodeForces 444C 线段树
  • 原文地址:https://www.cnblogs.com/Elasticsearchalgolia/p/13222035.html
Copyright © 2011-2022 走看看