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有帮助,现在您可以轻松阅读其他教程和文档。
    感谢您的阅读并祝您学习顺利:)

  • 相关阅读:
    Leetcode 50.Pow(x,n) By Python
    Leetcode 347.前K个高频元素 By Python
    Leetcode 414.Fizz Buzz By Python
    Leetcode 237.删除链表中的节点 By Python
    Leetcode 20.有效的括号 By Python
    Leetcode 70.爬楼梯 By Python
    Leetcode 190.颠倒二进制位 By Python
    团体程序设计天梯赛 L1-034. 点赞
    Wannafly挑战赛9 C-列一列
    TZOJ Start
  • 原文地址:https://www.cnblogs.com/Elasticsearchalgolia/p/13222035.html
Copyright © 2011-2022 走看看