Elasticsearch 的基本使用(1)

前言

前面的一篇博客已经介绍了如何在服务器上搭建一个单节点的Elasticsearch 集群,之前自己学习使用Elasticsearch 的时候并没有记录其中遇到的各种问题,而且在工作中也没有用到,所以现在有很多都忘得差不多了,故现在重新学习一下Elasticsearch 的基本使用。

基础概念

Elasticsearch 对比关系型数据库(MySQL)
ElasticsearchMySQL
索引(indices)数据库(database)
类型(type)数据表(table)
文档(Document)行(row)
字段(Field)列(Columns) 

      和关系型数据库一样,Elasticsearch集群可以包含多个索引(indices)(数据库),每一个索引可以包含多个类型(types)(表),每一个类型包含多个文档(documents)(行),然后每个文档包含多个字段(Fields)(列)。

     举例说明

我们在做学校的教务系统的时候一般都会创建一个school数据库,然后再school库里创建、设计满足各种业务需求的表,现这里类比关系型数据库我们使用Elasticsearch来做学生文档,所以为了创建学生目录,我们将进行如下操作:

  • 为每个学生的文档(document)建立索引,每个文档包含了相应学生的所有信息。

  • 每个文档的类型为student

  • student类型归属于索引school

  • school索引存储在Elasticsearch集群中。

说了这么多其实操作起来很简单,这里我们使用Kibana的开发工具,如下图 

在右侧的Console输入框输入:

PUT /school/student/1
{
  "name":"余昊",
  "sex":"男",
  "age":25,
  "address":"湖北省,十堰市,竹山县",
  "course":["数学分析","数据结构","Java 程序语言设计"]
}

在上面的path中有三部分信息:

名字说明
school索引名
student类型名
1学生的id

现在我们已经向Elasticsearch中添加了数据,下面我们来进行数据的检索

#查看id为1的学生的信息
GET /school/student/1
#查看全部学生信息,注意,这里把id换成_search
GET  /school/student/_search

响应内容的hits数组中包含了我们所有的三个文档。默认情况下搜索会返回前10个结果。

现在我们查一下性别为男的所有学生

GET /school/student/_search?q=sex:男

我们在请求中依旧使用_search关键字,然后将查询语句传递给参数q=。这样就可以得到所有性别为男的结果

我们也可以使用DSL语句查询来完成性别为男的所有学生

GET /school/student/_search
{
  "query": {
    "match": {
       "sex":"男"
    }
  }
}

实际应用中可能会有更多更复杂的查询,比如我们现在需要查询性别为男年龄小于24岁的学生信息,则我们可以在语句中添加过滤器

GET /school/student/_search
{
  "query": {
    "bool": {
      "filter": {
      "range": {
        "age": {
          "lte": 24
        }
      }
      }
      , "must": [
        {"match": {
          "sex": "男"
        }}
      ]
    }
  }
}

 

以上就是ES7.2 的初步使用的,后面会继续介绍更为复杂的查询,敬请期待

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值