八十ElasticSearch详解(上)

Posted 象在舞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了八十ElasticSearch详解(上)相关的知识,希望对你有一定的参考价值。

       上一篇文章我们主要介绍了一下ElasticSearch以及如何安装部署单机版本的ElasticSearch。本文我们来详细看一下它的原理以及它是如何使用的。关注专栏《破茧成蝶——大数据篇》,查看更多相关的内容~


目录

一、ElasticSearch的操作工具

1.1 浏览器访问

1.2 postman

1.3 命令行

1.4 Kibana

1.4.1 Kibana的安装

1.4.2 Kibana的测试

二、ElasticSearch的数据存储方式

2.1 ElasticSearch的存储方式

2.2 ElasticSearch的存储结构

三、ElasticSearch检索

3.1 检索文档

3.2  简单检索

3.3 全文检索

3.4 模糊查询

3.5 聚合


一、ElasticSearch的操作工具

1.1 浏览器访问

1.2 postman

1.3 命令行

curl -XPOST 'http://master:9200/xzw/doc' -i -H "Content-Type:application/json" -d '{"name":"fq","age":"27"}'

1.4 Kibana

       Kibana是一个开源的分析与可视化平台,设计出来用于和ElasticSearch一起使用的。可以用kibana搜索、查看存放在ElasticSearch中的数据。Kibana与ElasticSearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据分析与可视化的目的。

1.4.1 Kibana的安装

1、将下载好的安装包上传到服务器并解压

2、修改配置文件kibana.yml

server.port: 5601

server.host: "192.168.0.82"

elasticsearch.url: "http://192.168.0.82:9200"

kibana.index: ".kibana"

3、启动

[root@master bin]# pwd
/opt/modules/kibana-6.3.1-linux-x86_64/bin
[root@master bin]# ./kibana

4、访问监控界面

1.4.2 Kibana的测试

二、ElasticSearch的数据存储方式

2.1 ElasticSearch的存储方式

1、面向文档

       ElasticSearch是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document)。然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。在ElasticSearch中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。这种理解数据的方式与以往完全不同,这也是ElasticSearch能够执行复杂的全文搜索的原因之一。

2、JSON

       ElasticSearch使用javascript对象符号(JavaScript Object Notation),也就是JSON,作为文档序列化格式。JSON现在已经被大多语言所支持,而且已经成为NoSQL领域的标准格式,它简洁、简单且容易阅读。

2.2 ElasticSearch的存储结构

       我们通过一个例子来看一下ElasticSearch的存储结构:

       各个字段的释义如下:

{
  "_index": 文档所在索引名称,
  "_type": 文档所在类型名称,
  "_id": 文档唯一id,
  "_version": 版本号,
  "found": 是否查到,
  "_source": { 所需要查询的数据
    "name": "fq",
    "age": 27
  }
}

       1、index:一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。在一个集群中,可以定义任意多的索引。

       2、type:在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型。比如说,我们假设你运营一个博客平台并且将你所有的数据存储到一个索引中。在这个索引中,你可以为用户数据定义一个类型,为博客数据定义另一个类型,当然,也可以为评论数据定义另一个类型。这里需要注意的是:在ES6之后,一个index中只能有一个type。

       3、字段Field:相当于是数据表的字段,对文档数据根据不同属性进行的分类标识。

       4、document:一个文档是一个可被索引的基础信息单元。比如,你可以拥有某一个客户的文档,某一个产品的一个文档,当然,也可以拥有某个订单的一个文档。文档以JSON(Javascript Object Notation)格式来表示,而JSON是一个到处存在的互联网数据交互格式。在一个index/type里面,你可以存储任意多的文档。注意,尽管一个文档,物理上存在于一个索引之中,文档必须被索引/赋予一个索引的type。

三、ElasticSearch检索

3.1 检索文档

       对应的mysql的语句为:

select * from user where id = 1;

       我们通过HTTP方法GET来检索文档,同样的,我们可以使用DELETE方法删除文档,使用HEAD方法检查某文档是否存在。如果想更新已存在的文档,我们只需再PUT一次。

3.2  简单检索

       对应的MySQL的语句为:

select * from user;

3.3 全文检索

       查询出所有文档字段值为fq的文档:

GET xzw/doc/_search?q=fq

3.4 模糊查询

       查询出所有文档字段值分词后包含hhh的文档。

3.5 聚合

       ElasticSearch有一个功能叫做聚合(aggregations),它允许你在数据上生成复杂的分析统计,它很像SQL中的GROUP BY但是功能更强大。例如:

GET /xzw/doc/_search
{
  "aggs": {
    "all_interests": {
      "terms": { "field": "interests" }
    }
  }
}

 

       以上就是本文的所有内容,比较简单。你们在此过程中遇到了什么问题,欢迎留言,让我看看你们都遇到了哪些问题~

以上是关于八十ElasticSearch详解(上)的主要内容,如果未能解决你的问题,请参考以下文章

八十ElasticSearch详解(上)

八十二ElasticSearch详解(下)

八十二ElasticSearch详解(下)

八十二ElasticSearch详解(下)

八十二ElasticSearch详解(下)

八十一ElasticSearch详解(中)