ElasticSearch学习笔记一:简单使用

news2024/11/24 2:18:37

一、前言

该系列的文章用于记录本人从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.coloradmin.cn/o/2238993.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++笔记---异常

1. 异常的概念 1.1 异常和错误 异常通常是指在程序运行中动态出现的非正常情况,这些情况往往是可以预见并可以在不停止程序的情况下动态地进行处理的。 错误通常是指那些会导致程序终止的,无法动态处理的非正常情况。例如,越界访问、栈溢出…

python opencv3

三、图像预处理2 1、图像滤波 为图像滤波通过滤波器得到另一个图像。也就是加深图像之间的间隙,增强视觉效果;也可以模糊化间隙,造成图像的噪点被抹平。 2、卷积核 在深度学习中,卷积核越大,看到的信息越多&#xff0…

ENSP作业——小型园区网

题目 根据上图,可得需求为: 1.配置交换机上的VLAN及IP地址。 2.设置SW1为VLAN 2/3的主根桥,设置SW2为VLAN 20/30的主根桥,且两台交换机互为主备。 3.可以使用super vlan。(本次实验中未使用) 4.上层通过静…

解决 Vue3、Vite 和 TypeScript 开发环境下跨域的问题,实现前后端数据传递

引言 本文介绍如何在开发环境下解决 Vite 前端(端口 3000)和后端(端口 80)之间的跨域问题: 在开发环境中,前端使用的 Vite 端口与后端端口不一致,会产生跨域错误提示: Access to X…

Windows系统中Oracle VM VirtualBox的安装

一.背景 公司安排了师带徒,环境搭建问题一直是初级程序员头疼的事情,我记录一下这些基础的内容,方便初学者。大部分开发者的机器还是windows系统,所以写了怎么安装。 二.版本信息及 操作系统:windows11 家庭版…

uniapp 集成 uview

注意:HBuildX新建项目时必须选择vue2版本,vue3会不支持uview 下载安装方式: uview安装网站:uView2.0重磅发布,利剑出鞘,一统江湖 - DCloud 插件市场 配置: 1.安装sass插件 // 安装sass npm i …

24.11.12 JavaScript2

prompt() confirm() 这些函数 会阻止js解析器(js解析器执行引擎 读取运行js) 执行 不要使用 2history对象 历史记录对象 对应浏览器前进后退按钮 history 在历史记录里 back 前进 forward 后退go 0当前文档 负数 后退n个文档 正数 前进n个文档<!…

STM32cubemx+Proteus仿真和keil5联合调试

前面两步 STM32cubemx生成代码 https://blog.csdn.net/weixin_52733843/article/details/143637304 Proteus新建工程 https://blog.csdn.net/weixin_52733843/article/details/143578853 1 *Proteus仿真联合调试* 在Proteus中&#xff0c;双击STM32F103C6芯片&#xff0c…

信号的解析

信号 1.概念2.接口3.信号产生的过程1.信号的产生1.1信号的产生方式 2.信号的处理3.信号的保存阻塞信号 4.信号集操作函数 1.概念 信号量&#xff08;Semaphore&#xff09;是一个用于多线程或多进程同步的变量。它是操作系统提供的一种同步机制&#xff0c;用于控制多个线程或…

linux-c 使用c语言操作sqlite3数据库-1

一、练习目标 1、目标 1、使用sqlite3_exec执行查询语句&#xff0c;并将查询结果insert到链表中&#xff0c;最后打印链表的内容&#xff1b; 2、使用sqlite3_get_table执行查询语句&#xff0c;并以key&#xff1a;value的方式&#xff0c;打印查询结果。 2、环境准备 2.1、…

软件需求规格书评审报告,系统需求设计申评审,代码和测试过程评审报告,软件各类资质评审资料(word原件)

1.需求规格说明评审报告 2.系统设计评审报告 3.编码与测试评审报告 软件全套资料部分文档清单&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审批表&#xff0c;产品需求规格说明书&#xff0c;需求调研计划&#xff0c;用户需求调查单&#xff0…

flink sql同步mysql数据表到mysql

1. 关闭防火墙和selinux systemctl stop firewalld systemctl disable firewalld systemctl status firewalld2.安装java8 yum list java-1.8* yum install java-1.8.0-openjdk* -yjava -version3.下载和部署mysql yum -y install wget wget https://dev.mysql.com/get/Down…

【分布式事务】二、NET8分布式事务实践: DotNetCore.CAP 框架 、 消息队列(RabbitMQ)、 多类型数据库(MySql、MongoDB)

介绍 DotNetCore.CAP简称CAP, [CAP]是一个用来解决微服务或者分布式系统中分布式事务问题的一个开源项目解决方案, 同样可以用来作为 EventBus 使用,CAP 拥有自己的特色,它不要求使用者发送消息或者处理消息的时候实现或者继承任何接口,拥有非常高的灵活性。我们一直坚信…

vue3项目中内嵌vuepress工程两种实现方式

目录 一、示例二、创建vuepress工程三、配置vue项目的打包命令四、 通过iframe嵌套实现过程五、 将vue项目打包&#xff0c;启本地服务运行index.html 一、示例 vue项目&#xff0c;点击用户手册按钮&#xff0c;通过a标签跳转到vuepress框架搭建的页面。点击后者通过路由跳转…

智能座舱多屏项目,中控屏切换语言,后排屏闪黑屏问题

1. 背景 智能座舱多屏项目&#xff0c;中控屏切换语言&#xff0c;后排屏闪黑屏问题 2. 详细分析过程 通过events log查看activity的生命周期&#xff1a;adb shell logcat -b events com.android.rwhvac.view.behind.BehindActivity2 : displayId 2 副屏app com.android.…

多商户中英双语电商系统设计与开发 PHP+mysql

随着全球电商市场的扩展&#xff0c;多商户平台成为了越来越多商家参与全球贸易的重要方式。为了适应不同语言用户的需求&#xff0c;尤其是中英双语用户的需求&#xff0c;设计一个支持中英双语的电商系统显得尤为重要。本文将重点探讨如何设计一个多商户中英双语电商系统&…

Ansys Zemax | 手机镜头设计 - 第 4 部分:用LS-DYNA进行冲击性能分析

该系列文章将讨论智能手机镜头模组设计的挑战&#xff0c;从概念和设计到制造和结构变形分析。本文是四部分系列中的第四部分&#xff0c;它涵盖了相机镜头的显式动态模拟&#xff0c;以及对光学性能的影响。使用Ansys Mechanical和LS-DYNA对相机在地板上的一系列冲击和弹跳过程…

【JavaEE初阶】多线程上部

文章目录 本篇目标&#xff1a;一、认识线程&#xff08;Thread&#xff09;1.概念&#xff1a;2.创建线程 二、Thread 类及常见方法2.1 Thread 的常见构造方法2.2 Thread 的几个常见属性2.3 启动⼀个线程 - start()2.4 中断⼀个线程2.5 等待⼀个线程 - join()2.6 获取当前线程…

丹摩征文活动|智谱AI引领是实现文本可视化 - CogVideoX-2b 部署与使用

文章目录 前言一、DAMODEL平台特性二、创建CPU云实例三、CogVedioX介绍四、DAMODEL一键部署CogVideoX1. 创建丹摩实例(参考上述介绍)2. 配置环境和依赖3. 模拟与配置文件4. 开始运行4.1 调试4.2 webUI4.3 端口映射 前言 DAMODEL&#xff08;丹摩智算&#xff09;是一款专为满足…

MySQL的知识巩固

目录 三大范式 第一范式: 第二范式: 第三范式: 巴斯-科德范式(BCNF): 反范式&#xff1a; MySQL的工作原理 三大范式 第一范式: 一个字段只表明一个事情 优点: 数据一致性&#xff1a; 在1NF中&#xff0c;由于每个属性都是原子的&#xff0c;因此避免了在一个属性中存…