当前位置: 首页 > article >正文

ElasticSearch学习笔记一:简单使用

一、前言

该系列的文章用于记录本人从0学习ES的过程,首先会对基本的使用进行讲解。本文默认已经安装了ES单机版本(当然后续也会有对应的笔记),且对ES已经有了相对的了解,闲话少叙,书开正文。

二、ES简介

ES是Elasticsearch的缩写,是一个基于Lucene的开源全文搜索引擎,提供了分布式、多租户、全文搜索、实时数据分析等功能。ES使用Java语言编写,可以通过RESTful API进行访问和操作,具有快速、可扩展、高可用等特点,是当前最受欢迎的搜索和分析引擎之一。

三、ES中的基本概念

1、索引

在关系型数据库中,我们经常会使用到索引去优化查询,在ES中的索引则更类似于关系型数据库(这里以MySQL为例)中的表,在ES中当我们说建立某个索引时,等同于在Mysql创建某个表。

2、文档

在ES中文档类似于MySQL的表中的一条数据,一个文档就是一条数据。ES中的文档是以JSON格式存储的。用户对数据操作的最细粒度就是文档。

3、字段

这个和MySQL中基本一致,一个索引由多个字段组成,例如我有一个Student(学生)索引,里面就可能有name、age、grade等一系列的字段。

4、映射

Mapping,建立索引时需要定义文档的数据结构,这种结构叫做映射。文档的字段类型一旦设定后就不能更改,因为ES针对定义的类型已经建立特殊的索引结构

5、DSL

ES使用DSL(Domain specific Language,领域特定语言),来定义一系列的操作,ES中的DSL采用JSON进行表达。

四、ES基本使用

1、创建一个索引

目标:创建一个名为hotel的索引(换成我们熟悉的MySQL来说就是创建一张名为hotel的表),字段包含标题、城市、价格。

语法:
PUT /索引名
{
  "mappings":{
    "properties":{
      "字段1":{
        "type":"类型"
      },
      "字段2":{
        "type":"类型"
      },
      ....
    }
  }
}


实际操作:
PUT /hotel
{
  "mappings": {
    "properties": {
      "title":{
        "type": "text"
      },
      "city":{
        "type": "keyword"
      },
      "price":{
        "type": "double"
      }
    }
  }
}

解释:通过上述DSL语句,我们就创建了一个名为hotel的索引,同时我们通过mapping(映射)设置了每个字段的类型,包括text、keyword、double,当然ES中不仅仅支持这几种类型,具体的我们放到后面的文章详细讲解。

2、写入数据

在上一步中我们创建了一个hotel所以,接下来我们就要往这个索引里写入数据,确切的说是写入文档。

1、不指定ID
POST /hotel/_doc
{
  "title":"国际大酒店",
  "city":"杭州",
  "price":1888
}

2、指定ID
POST /hotel/_doc/1
{
  "title":"白金汉大酒店",
  "city":"杭州",
  "price":2000
}


解释:通过上述DSL我们创建了两个文档,不同点在于第一个没有指定文档ID,此时es会自动生成一个ID,第二个则是手动指定了ID,此时ES将不再设置ID,我们可以查看一下结果

在这里插入图片描述

3、简单查询

查询可以说是ES中最重要的功能,ES之所以可以流行就是因为其强大的搜索能力,由于是第一篇文章,我们先接触最简单的搜索。

1、根据ID搜索

例如我们要搜索刚才创建的第一条数据,也就是ID由ES自动生成的,nlZ2IJMBnXpwIQ8i5SHn

语法:
GET /{索引名}/_doc/{ID}
示例:
GET /hotel/_doc/nlZ2IJMBnXpwIQ8i5SHn

结果如下:

2、根据一般字段搜索

例如搜索“国际“

语法:
GET /{索引名}/_search
{
  "query":{
    .....
  }
}


示例:
GET /hotel/_search
{
  "query": {
    "match": {
      "title": "国际"
    }
  }
}

在这里插入图片描述

当然ES的搜索远不止此,更多的高级功能将放在后文中讲解。

4、删除

例如我们要删除id = 1的文档

DELETE /hotel/_doc/1

五、结束语

第一篇文章,相对简单,我们介绍了ES中的基本概念,然后做了最简单CRUD操作,也算是对ES有了一个最最简单的认识,后续的文章会逐步深入,希望对你有所帮助!未完待续


http://www.kler.cn/a/397654.html

相关文章:

  • C:原反补码
  • TCP(下):三次握手四次挥手 动态控制
  • Unity类银河战士恶魔城学习总结(P127 Stat ToolTip属性提示)
  • Flask和Python实现在线课堂学生疲劳检测系统设计与实现
  • 24.11.13 机器学习 特征降维(主成份分析) KNN算法 交叉验证(K-Fold) 超参数搜索
  • leetcode hot100【LeetCode 236.二叉树的最近公共祖先】java实现
  • 项目启动运行npm run dev报错digital envelope routines::unsupported at new Hash
  • 用 Python 从零开始创建神经网络(五):损失函数(Loss Functions)计算网络误差
  • 【030】基于51单片机甲醛检测报警器【Proteus仿真+Keil程序+报告+原理图】
  • 动态网页爬取 —— ajax 与 selenium
  • Scratch 015生日贺卡(下)
  • 技术理论||01无人机倾斜摄影原理
  • ERROR TypeError: AutoImport is not a function
  • kafka中是如何快速定位到一个offset的
  • 计算机的错误计算(一百五十六)
  • Git设置用户名及邮箱
  • 接口文档的编写
  • 深入解析 CentOS 7 上 MySQL 8.0 的最佳实践20241112
  • 新版Servlet3.0~5.0和旧版配置的区别
  • 算法练习:438. 找到字符串中所有字母异位词
  • 【Rust中的项目管理】
  • vue之axios根据某个接口创建实例,并设置headers和超时时间,捕捉异常
  • MySQL8 安装教程
  • 【网络安全面经】技术性问题
  • 大数据治理:构建高效数据生态的基石
  • 前端:HTML/CSS/JavaScript基础知识