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

ElasticSearch入门篇

简介

ElasticSearch简介:简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单个开源的分布式搜索引擎,可以用来实现搜索,日志统计,分析,系统监控等多种功能。

Elastic Stack(ELK):是以Elasticsearch为核心的技术栈,其中包括beats。logstash,kibanba,Elasticsearch。

正向索引和倒排索引

正向索引,假设我们有一个商品表,id是主键

如果我们按照id查询数据,他会走索引,查询效率很快,但是一般来说我们是会按照title来搜索,sql语句如下:

select * from good where title like “%手机%”

他查询需要全表扫描,一个个去匹配,效率可想而知,这就是正向索引,他在做局部内容检索的时候效率十分底。

倒排索引

文档:每条数据就是一个文档,类似于数据库中一张表的一条数据

词条:就是把文档分成一个个词语

假如同样我们搜索华为手机,基于倒排索引,他首先会将华为手机进行分词,获得文档id之后基于id进行查询文档,这时候虽然经过两次检索,但是每次都是基于索引的,总的来说,效率很高。

MySQL和Es的概念对比

Mysql:擅长事务类型操作,可以确保数据的安全和一致性
Elasticsearch:擅长海量数据的搜索、分析、计算

安装Elasticsearch和kibana

安装Elasticsearch

我们这里继续使用docker来安装

1,创建一个网络,因为我们需要让kibana容器和es互联

docker network create es-net

2,拉取镜像

docker pull elasticsearch

 但是es有差不多一个G拉取速度太慢,建议下载制作好的文件,上传,直接加载成镜像,例如上传es.tar将他加载为镜像,速度会很快。

 如果你直接拉取的镜像这个命令不需要执行:

docker load -i es.tar

3,运行es容器

docker run -d \--name es \-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \-e "discovery.type=single-node" \-v es-data:/usr/share/elasticsearch/data \-v es-plugins:/usr/share/elasticsearch/plugins \--privileged \--network es-net \-p 9200:9200 \-p 9300:9300 \
elasticsearch:7.12.1

命令解释:

  • -e "cluster.name=es-docker-cluster":设置集群名称

  • -e "http.host=0.0.0.0":监听的地址,可以外网访问

  • -e "ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小,因为他是基于java开发的

  • -e "discovery.type=single-node":非集群模式

  • -v es-data:/usr/share/elasticsearch/data:挂载逻辑卷,绑定es的数据目录

  • -v es-logs:/usr/share/elasticsearch/logs:挂载逻辑卷,绑定es的日志目录

  • -v es-plugins:/usr/share/elasticsearch/plugins:挂载逻辑卷,绑定es的插件目录

  • --privileged:授予逻辑卷访问权

  • --network es-net :加入一个名为es-net的网络中

  • -p 9200:9200:端口映射配置

4,浏览器输入ip:9200如果出现

 安装成功!!!!

安装Kibana

kibana可以给我们提供一个elasticsearch的可视化界面,便于我们更方便使用es

1,拉取镜像

docker pull kibana

这里还是建议上传打包好的镜像,将他重新加载成镜像,如果直接拉取不需要执行这个命令

docker load -i kibana.tar

 2,启动kibana容器

docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=es-net \
-p 5601:5601  \
kibana:7.12.1

命令解释:

  • --network es-net :加入一个名为es-net的网络中,与elasticsearch在同一个网络中

  • -e ELASTICSEARCH_HOSTS=http://es:9200":设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch

  • -p 5601:5601:端口映射配置

3,浏览器输入ip:5601即可查看-(启动较慢,稍等一会)

安装成功!!!

ES-操作索引库(类似MySQL的表)

mapping属性

mapping是对索引库中文的约束,常见的mapping属性包括:

type:字段数据类型,常见的简单类型有:

        字符串:text(可分词文本),keyword(不可分词,例如国家,品牌,ip等等)

        数值:long,integer,short,double,float

        布尔:boolean

        日期:date

        对象:object

index:是否创建索引,默认为true。

analyzer:使用那种分词器。

properties:子字段,对象嵌套时需要。

创建索引库-类似于数据库的表

假如我们数据库有一个用户表,其中一条数据如下:

{  "id": 1,  "age": 21,  "weight": 52.1,  "isMarried": false,  "info": "csdn最靓的崽!!",  "email": "gde@nb.cn",  "scores": [  99.1,99.5,98.9],  "name": {  "firstName": "蛋儿",  "lastName": "狗"  }  
}

不难看出数据库表如何创建的,我们来看看在es中如何创建 索引库

这是一个示例:

# 创建索引库
PUT /索引库名称
{"mappings": {"properties": {"字段1":{"type":"类型,例如text",, "analyzer": "使用哪种分词器"},"字段2":{"type": "类型,例如keyword","index": false # 不适用索引},"字段3":{"properties": {"子字段1";{"type":"字段类型"},"子字段2";{"type":"字段类型"}}}}}
}

 实现之后(我们取少量字段):


# 创建索引库
PUT /userinfo
{"mappings": {"properties": {"info":{"type":"text","analyzer": "ik_smart"},"email":{"type": "keyword","index": false },"age":{"type": "integer","index": false},"name":{"properties": {"dirstName":{"type":"keyword"},"lastName":{"type":"keyword"}}}}}
}

 注意:索引名必须小写!!

索引库查询

GET /索引库名

索引库删除

DELETE /索引库名

索引库修改

需要注意的是es在索引库创建的时候就会基于索引库创建倒排索引,如果修改索引库结构倒排索引就会失效,所以,es是不允许修改索引库的,但是可以在索引库中增加新的字段。

# 向索引库中增加一个字段
PUT /索引库名/_mapping
{"properties":{"新字段名":{"type":"字段类型"}}
}

Es-操作文档

(类似MySQL的数据)

 索引库插入一条文档

示例语句:

# 向索引库中插入一条数据
POST /userinfo/_doc/文档id,例如1,2。。。
{"字段1":"值1","字段2":"值2","字段3":{"子属性1":"值3","子属性2":"值4"}
}

具体实现:

# 向索引库中插入一条数据
POST /userinfo/_doc/1
{"info":"csdn最靓的崽!!","email":"gde@nb.cn","age":"20","name":{"dirstName":"狗","lastName":"蛋儿"}
}

索引库查询的文档

# 查询id为1的数据
GET /索引库名/_doc/1#查询所有数据
GET /userinfo/_search  
{  "query": {  "match_all": {}  }  
}

索引库删除一条文档

#删除id为1的数据
DELETE /userinfo/_doc/1

索引库修改文档

1,全量修改

原本插入文档使用的是POST请求这时候只需要换成PUT请求即可,它会将原有的文档删除在重新插入,例如:

# 全量修改 修改索引库中id为1的数据,如果不存在就插入
PUT /userinfo/_doc/1
{"info":"csdn最靓的崽!!","email":"gde@nb.cn","age":"20","name":{"dirstName":"狗","lastName":"蛋儿"}
}

2,局部修改


# 局部修改
POST /userinfo/_update/1
{"doc": {"age":"99"}
}

至此es基础篇完结!!!!!!

相关文章:

ElasticSearch入门篇

简介 ElasticSearch简介:简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene…...

MAXHUB会议解决方案持续进化,以“高效”为核心推动行业发展

4月16日,MAXHUB 2024新品发布会在视源股份(002841)北京产业园圆满举行。本次发布会以“智会融合 进化不止”为主题,首发MAXHUB高效会议解决方案,以AI智能、开放兼容、场景化交付为方向,为用户提供高效、便捷…...

CentOS 7安装Redis

说明:本文介绍如何在CentOS 7操作系统下安装Redis 下载安装 首先,去官网上下载所需要安装的版本,官网地址:https://download.redis.io/releases/,我这里下载3.2.1版本的 下载完,上传到云服务器上&#xf…...

Kubernetes (K8s) 部署前后端分离项目

要使用Kubernetes (K8s) 部署一个涵盖Django后端、Vue前端、Redis、Nginx、RabbitMQ和MySQL的前后端分离项目,需要遵循以下步骤。这个过程涉及创建和配置多个资源,包括部署(Deployments)、服务(Services)、配置映射(ConfigMaps)、密钥(Secrets)和Ingress规则。 大纲…...

MLT媒体程序框架01:概述

MLT官网 概述 MLT是一个开源的多媒体框架,专为电视广播而设计和开发。它为广播公司、视频编辑器、媒体播放器、转码器、网络流媒体和更多类型的应用程序提供了一个工具包。该系统的功能是通过各种现成的工具、XML创作组件和基于API的可扩展插件提供的。 它是通过…...

9【原型模式】复制一个已存在的对象来创建新的对象

你好,我是程序员雪球。 今天我们来学习23种设计模式之原型模式,在平时开发过程中比较少见。我带你了解什么是原型模式,使用场景有哪些?有什么注意事项?深拷贝与浅拷贝的区别,最后用代码实现一个简单的示例…...

谷粒商城实战(013 业务-认证服务-短信验证)

Java项目《谷粒商城》架构师级Java项目实战,对标阿里P6-P7,全网最强 总时长 104:45:00 共408P 此文章包含第211p-第p219的内容 介绍 认证中心要集成 社交登录、OAuth2.0、单点登录 等功能 OAuth 2.0: 问题解决: OAuth 2.0 主要…...

Unity中支持泰语--没有版权限制

在Unity中支持泰语主要涉及以下几个方面: 选择合适的字体:在Unity中,确保使用支持泰文字符的字体是至关重要的。例如,可以选择使用Noto Serif Thai字体,这是一个支持泰语的字体2。 处理Unity版本问题:某些…...

C语言传统垃圾收集器的缺陷以及我的思路

传统的比如Boehm回收器,都是在malloc/realloc/free上做文章,参考这篇文章【How the Boehm Garbage Collector Works】的解释,因为C数据结构是无法预料的,内存里面并没有特殊标记,很难判断哪些是指针哪些是数据&#xf…...

数据交换格式

一、什么是数据交换格式 在计算机的不同程序之间,或者不同的编程语言之间进行交换数据,也需要一种大家都能听得懂得‘语言’,这就是数据交换格式,它通过文本以特定的形式来进行描述数据。 二、常用的几种数据交换格式 客户端常…...

电力系统卫星授时信号安全隔离装置防护方案

电力系统是国家关键基础设施, 电力安全关系国计民生, 是国家安全的重要保障, 与政治安全、经济安全、 网络安全、社会安全等诸多领域密切关联。电网运行情况瞬息万变,为了在其发生事故时能够及时得到处理,需要统一的时…...

【编程TOOL】VC++6.0下载安装配置使用保姆式教程

目录 ​编辑 1.软件介绍 2.软件下载 3.软件安装 3.1.下载得到可执行文件并双击进行安装 3.2. 点击下一步 3.3. 选择安装位置 3.4. 勾选“创建桌面快捷方式”并点击下一步 5. 点击安装并等待 3.6. 先取消运行,后点击完成,软件即安装完毕 4.兼容性配置 4.1…...

组织机构代码是哪几位?营业执照怎么看组织机构代码?

组织机构代码是哪几位? 组织机构代码通常指的是组织机构代码证上的一组特定数字,它用于唯一标识一个组织或机构。在中国,组织机构代码由9位数字组成,前8位是本体代码,最后1位是校验码。这组代码是按照国家有关标准编制的&#x…...

nginx禁止ip访问,只允许域名访问

无论ip直接访问,还是通过域名访问,最终都是通过ip访问到服务器浏览器访问时会携带Host参数,通过ip访问时携带的是ip,通过域名访问时携带的是域名nginx收到请求后判断host的值,如果判断出不是通过域名访问的则拒绝&…...

10组Python面试高频问题与详尽解答指南

大家好,你们准备好了吗?面试官们总喜欢出其不意地问些让人头大的问题。别担心,今天我来帮你们梳理10个Python面试中的热门难题,让你的回答既专业又有趣!让我们一起变身Python高手吧! 1. 问题: 什么是Pytho…...

使用SpringBoot将中国地震台网数据保存PostGIS数据库实践

目录 前言 一、数据转换 1、Json转JavaBean 2、JavaBean与数据库字段映射 二、空间数据表设计 1、表结构设计 三、PostGIS数据保存 1、Mapper接口定义 2、Service逻辑层实现 3、数据入库 4、运行实例及结果 总结 前言 在上一篇博客中基于Java的XxlCrawler网络信息爬…...

后端返回树结构

出参结构 Getter Setter public class TreeResponse implements Serializable {// 主键private Long id;// 父级节点private Long parentId;// 层级private Byte layer;// 编码private String docCode;// 名称private String docName;// 子节点private List<TreeResponse&g…...

C语言——通讯录的实现

一.前言 嗨嗨嗨&#xff0c;又和大家见面了&#xff01;前面我们讲到了如何实现一个循序表。现在我们开始讲解如何基于循序表来实现通讯录功能。 二.正文 通讯录中的SeqlList.h #pragma once //#define SLDateType int #include<stdio.h> #include<stdlib.h> #…...

Next-Scale Prediction、InstantStyle、Co-Speech Gesture Generation

本文首发于公众号&#xff1a;机器感知 Next-Scale Prediction、InstantStyle、Co-Speech Gesture Generation Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction We present Visual AutoRegressive modeling (VAR), a new generation p…...

class中 padding和margin的用法;

如果我们想要移动盒子等的位置 &#xff0c;除了可以用相对定位和绝对定位还可以用margin 和paddinng&#xff1b; 结构如图所示 margin和padding的用法&#xff1a; padding和margin后面可以跟1或2或3或4个数&#xff0c;按照顺序分别是上&#xff0c;右&#xff0c;下&…...

单独使用YOLOV9的backbone网络

前言 YOLO系列的网络结构都是通过.yaml来进行配置的,当要单独想使用其中的backbone网络时,可以通过yaml配置文件来进行网络搭建。 backbone的yaml配置文件与网络结构 backbone:[[-1, 1, Silence, []], # conv<...

WordPress JS Support Ticket插件 RCE漏洞复现

0x01 产品简介 WordPress和WordPress plugin都是WordPress基金会的产品。JS Support Ticket是使用在其中的一套开源票务系统插件。 0x02 漏洞概述 WordPress中的JS Support Ticket插件存在未经上传漏洞,未经身份验证的攻击者可以上传恶意脚本的服务器,执行任意指令,从而获…...

加盟代理短视频无人直播项目,开启互联网线上经营新模式

随着短视频行业的快速发展和用户数量的不断增长&#xff0c;短视频无人直播项目成为了近年来备受关注的创业机会。本文将分享如何加盟代理短视频无人直播项目&#xff0c;开启属于自己的经营新模式。 一、了解无人直播项目的核心优势 短视频无人直播项目是结合了短视频与直播的…...

spring高级篇(一)

1、ApplicationContext与BeanFactory BeanFactory是ApplicationContext的父级接口&#xff1a;&#xff08;citlaltu查看类关系图&#xff09; 在springboot的启动类中&#xff0c;我们通过SpringApplication.run方法拿到的是继承了ApplicationContext的ConfigurableApplicatio…...

免费的GPT-3.5 API服务aurora

什么是 aurora &#xff1f; aurora 是利用免登录 ChatGPT Web 提供的无限制免费 GPT-3.5-Turbo API 的服务&#xff0c;支持使用 3.5 的 access 调用。 【注意】&#xff1a;仅 IP 属地支持免登录使用 ChatGPT的才可以使用&#xff08;也可以自定义 Baseurl 来绕过限制&#x…...

突破编程_C++_网络编程(Windows 套接字(处理 TCP 粘包问题))

1 TCP 协议与粘包问题概述 1.1 TCP 粘包的产生原因 TCP粘包问题的产生原因涉及多个方面&#xff0c;主要的原因如下&#xff1a; 首先&#xff0c;发送方在发送数据时&#xff0c;由于TCP协议为提高传输效率而采用的Nagle算法&#xff0c;可能会将多个小数据包合并成一个大数…...

【训练营】DateWhale——动手学大模型应用开发(更新中)

文章目录 写在前面大模型简介LLM简介RAG简介LangChain开发框架开发LLM应用的整体流程 写在前面 大模型时代从GPT爆发开始到现在已有一年多了&#xff0c;深度学习发展之快无法想象&#xff0c;一味感叹技术发展速度超越个人学习速度是没用的&#xff0c;倒不如花点时间参加一些…...

【学习笔记十九】EWM Yard Management概述及后台配置

一、EWM Yard堆场管理业务概述 1.Yard Management基本概念 YARD管理针对的是库房以外的区域&#xff0c;可以理解为入大门开始到库门之前的这部分的区域 堆场结构 像在仓库中一样&#xff0c;将相应仓位映射为堆场仓位&#xff0c;可将其分组到堆场分区。场地中可能具有以下结…...

【环境搭建】(五)Ubuntu22.04安装cuda_11.8.0+cudnn_8.6.0

一个愿意伫立在巨人肩膀上的农民...... 设备配置&#xff1a; 一、安装GCC 安装cuda之前&#xff0c;首先应该安装GCC&#xff0c;安装cuda需要用到GCC&#xff0c;否则报错。可以先使用下方指令在终端查看是否已经安装GCC。 gcc --version 如果终端打印如下则说明已经安装…...

【UE5.1】使用MySQL and MariaDB Integration插件——(3)表格形式显示数据

在上一篇&#xff08;【UE5.1】使用MySQL and MariaDB Integration插件——&#xff08;2&#xff09;查询&#xff09;基础上继续实现以表格形式显示查询到的数据的功能 效果 步骤 1. 在“WBP_Query”中将多行文本框替换未网格面板控件&#xff0c;该控件可以用表格形式布局…...

网页制作个人主页图片/seo超级外链工具

什么是子网掩码一、 子网掩码不能单独存在&#xff0c;它必须结合IP地址一起使用。二、 子网掩码只有一个作用&#xff0c;就是将某个IP地址划分成网络地址和主机地址两部分。三、 对于A类地址来说&#xff0c;默认的子网掩码是255.0.0.0&#xff1b;对于B类地址来说默…...

网站上怎么做微信支付接口/seo引擎优化是什

思路1&#xff1a;在字符流中&#xff0c;我们只记录有贡献的答案&#xff0c;即hash值为1的&#xff0c;大于1的全部舍弃 代码&#xff1a; class Solution{ public://Insert one char from stringstreamqueue<char> q;unordered_map<char,int> hash;void inser…...

w7系统那个网站做的好/百度收录链接提交入口

在WEB测试中&#xff0c;经常会碰到很多表单输入框&#xff0c;大体有两种&#xff0c;一种是数值型文本框&#xff0c;一种是字符型的普通文本输入框。上次提到了测试用例共享能提高测试人员的工作效率,节省时间&#xff0c;我们可以将这种普遍的校验提取出来放入公共库。 针对…...

对外贸网站建设的建议/企业宣传方式有哪些

cookie cookie: 获取百度翻译某个词条的结果 一定要对start_requests方法进行重写。 两种解决方案&#xff1a; 1. Request&#xff08;&#xff09;方法中给method属性赋值成post2. FormRequest&#xff08;&#xff09;进行post请求的发送 爬虫相关操作 # -*- coding: utf-8 …...

wordpress js合并/正安县网站seo优化排名

其实互联网职业可以大致分两个阶段&#xff0c;在毕业后的3到5年内主要都是以学习、积累为主&#xff0c;从一开始啥都不懂的校园“新鲜人”向“职业人”转变。如果你是Java开发者&#xff0c;在这个阶段你会学习&#xff1a; 1、基础的Java知识&#xff0c;多线程、集合类、JV…...

四川建设工程招标网/天津seo诊断技术

android 获取IMEI号 android 获取 imei号码 核心代码: Imei ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)).getDeviceId(); 1.加入权限 在manifest.xml文件中要添加 <uses-permission android:name"android.permission.READ_PHONE_STATE" /> 2.代…...