Elasticsearch连续剧之基础篇

news2024/11/18 23:37:09

目录

  • 一、前言
  • 二、Elasticsearch数据结构
  • 三、安装
    • 1.配置最大可创建文件数大小
    • 2.由于ES不能以root用户运行,我们需要创建一个非root用户,此处创建一个名为es的用户
    • 3.安装es
    • 4.启动es服务
  • 四、常用操作
    • 1.创建没有结构的索引
    • 2.创建有结构的索引
    • 3.删除索引
    • 4.文档操作
      • 4.1添加或修改
      • 4.2根据id查询文档
      • 4.3根据id批量查询文档
      • 4.4查询所有文档
      • 4.5修改文档部分字段
      • 4.6删除文档
    • 5.域的属性
      • 5.1 index
      • 5.2 type 域的类型
      • 5.3 store 存储

一、前言

Elasticsearch是一个全文检索服务器,全文检索是一种非结构化数据的搜索方式,通过建立倒排索引加快搜索效率;程序员Shay基于Lucene开发了开源项目 Elasticsearch,其本质上是一个java语言开发的web项目,我们可以通过RESTful风格的接口访问该项目内部的Lucene,从而让全文搜索变得简单(所有的请求都忽略ip地址:端口号)。

二、Elasticsearch数据结构

tips:Elasticsearch7以后,删除了type的概念

  • 文档(Document):文档是可被查询的最小数据单元,一个Document 就是一条数据。类似于关 系型数据库中的记录(一行)的概念。

  • 索引(Index):索引是多种类型文档的集合,类似于关系型数据库中的库的概念。

  • 域(Filed):文档由多个域组成,类似于关系型数据库中的字段的概念。

在这里插入图片描述

三、安装

1.配置最大可创建文件数大小

#打开系统文件:
vim /etc/sysctl.conf
#添加以下配置:
vm.max_map_count=655360
#配置生效:
sysctl -p

2.由于ES不能以root用户运行,我们需要创建一个非root用户,此处创建一个名为es的用户

#创建用户:
useradd es

3.安装es

#解压:
tar -zxvf elasticsearch-7.17.0-linux-x86_64.tar.gz
#重命名:
mv elasticsearch-7.17.0 elasticsearch1
#移动文件夹:
mv elasticsearch1 /usr/local/
#es用户取得该文件夹权限:
chown -R es:es /usr/local/elasticsearch1

4.启动es服务

#切换为es用户:
su es
#进入ES安装文件夹:
cd /usr/local/elasticsearch1/bin/
#启动ES服务:
./elasticsearch
#查询ES服务是否启动成功
curl 127.0.0.1:9200

安装完es之后,还需要有一个kibana可视化平台,方便对es索引进行搜索和,查看,交互。该平台安装步骤在下面的链接,有兴趣可以查看。

kibana安装链接

四、常用操作

1.创建没有结构的索引

请求方式:PUT

PUT /student

*为索引添加结构

#基本格式
POST /索引名/_mapping
{
    "properties":{
    "域名1":{
    "type":域的类型,
    "store":是否存储,
    "index":是否创建索引,
    "analyzer":分词器
    },
    "域名2":{
    ...
    }
  }
}
eg:
POST /student/_mapping
{
  "properties":{
    "id":{
      "type":"integer"
    },
    "name":{
      "type":"text"
    },
    "age":{
      "type":"integer"
    }
  }
}

2.创建有结构的索引

只有index设置为true,才能为该域的数据创建索引

mappings:映射是用来定义一个文档,和其包含的字段,是如何存储和索引的过程。
类型:1.properties /fields:一份映射类型包含字段列表或者文档的相关属性。

PUT /索引名
{
    "mappings":{
        "properties":{
            "域名1":{
                "type":域的类型,
                "store":是否单独存储,
                "index":是否创建索引,
       "analyzer":分词器
           },
            "域名2":{
                ...
           }
        }
   }
}

eg:
#创建有结构的索引
PUT /student1
{
  "mappings": {
    "properties": {
      "id": {
        "type": "integer"
      },
      "name": {
        "type": "text"
      },
      "age": {
        "type": "integer"
      }
    }
  }
}

3.删除索引

DELETE /索引名

eg:
DELETE /student1

4.文档操作

前面的创建的索引(有结构)相当于数据库创建了一张表,这里的文档操作相当于给数据表添加了一行或几行数据

4.1添加或修改

当id值存在时就是修改,否则就是一个新增id值不写则自动生成

POST /索引/_doc/[id值]
{
 "field名":field值
}

eg:
POST /student/_doc/1
{
  "id":1,
  "name":"itbz",
  "age":10
}

4.2根据id查询文档

GET /索引/_doc/id值

eg:
#查询文档
GET /student/_doc/1

4.3根据id批量查询文档

GET /索引/_mget
{
    "docs":[
       {"_id":id值},
       {"_id":id值}
   ]
}

eg:
#批量请求
GET /student/_mget
{
  "docs": [
    {
      "_id": 1
    },
    {
      "_id": 2
    }
  ]
}

4.4查询所有文档

query: 在查询过程中,除了判断文档是否满足查询条件外,ES还会计算一个_score来标识匹配的程度,旨在判断目标文档和查询 条件匹配的有多好(与查询的条件有多吻合).

GET /索引/_search
{
   "query": {
       "match_all": {}
   }
}

eg:
#查询所有文档
GET /student/_search
{
  "query": {
    "match_all": {}
  }    
}

4.5修改文档部分字段

POST /索引/_doc/id值/_update
{
    "doc":{
        域名:}
}

eg:
POST /student/_doc/1/_update
{
    "doc":{
        "name":"shangxuetang"
    }
}

4.6删除文档

DELETE /索引/_doc/id值

eg:
#删除
DELETE /student/_doc/1
  • Elasticsearch在执行删除操作时,ES先标记文档为delete为delete状态,等ES存储空间不足或者工作空闲的时候再执行物理删除
  • 修改文档操作时,ES不会真的修改Document中的数据,而是标记ES中原有的文档为deleted状态,再创建一个新的文档来存储数据(先删除后修改)

5.域的属性

5.1 index

**该域是否创建索引。只有值设置为true,才能根据该域的关键词查询文档。**

eg:
PUT /student1
{
  "mappings": {
    "properties": {
      "name": {
        "type": "text",
        "index":true
      }
    }
  }
}
// 根据关键词查询文档
GET /索引名/_search
{
 "query":{
        "term":{
 搜索字段: 关键字
 }
   }
}

eg:
GET /student1/_search
{
  "query": {
    "term": {
      "name": "love"
    }
  }
}

5.2 type 域的类型

在这里插入图片描述

keyword类型:如果使用该类型,只能根据整体来查到

5.3 store 存储

设置是否单独存储。如果设置为true,则该域能单独查询。(本来可以字段都是存在_source,设置store属性为true,那么有一个单独的存储空间为这个字段做存储,而且这个存储是独立于source的存储的。)

// 单独查询某个域:
GET /索引名/_search
{
  "stored_fields": ["域名"]
}

eg:
GET /student1/_search
{
  "stored_fields": ["name"]
}
  • 使用场景:该属性访问比较频繁。
  • 使用store存储字段field会占用磁盘空间。如果需要从文档中提取(即在脚本中和聚合)它会帮助减少计算。在聚合时具有store属性的字段会比不具有这个属性的字段快。

这就是es的安装和常见基础操作,如果可以帮到你,希望给个一键三连。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/149222.html

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

相关文章

【迅为iMX6Q】开发板 u-boot 2020.04 RTL8211E 以太网驱动适配

相关参考 【迅为iMX6Q】开发板 u-boot 2015.04 SD卡 启动 【迅为iMX6Q】开发板 u-boot 2020.04 SD卡 启动 【迅为iMX6Q】开发板 u-boot 2022.04 SD卡 启动 开发环境 win10 64位 VMware Workstation Pro 16 ubuntu 22.04 【迅为imx6q】开发板, 2G DDR 目标 …

SAP Webservice 发布外网SAP端代理配置

前言 SAP Webservice接口发布外网的需求不算少见,一般是通过代理形式替换Webservice地址中的域名,但是完整的Webservice接口发布外网还需要以下步骤(如果调用方在不做这些配置的情况下可以正常调用,则无需处理。) 1. 配…

gravity 安装部署

gravity是由膜拜公司自主研发的不同数据库间数据同步工具。 官方介绍:https://github.com/moiot/gravity/blob/master/README-cn.md Gravity 是一款数据复制组件,提供全量、增量数据同步,以及向消息队列发布数据更新。 DRC 的设计目标是&a…

有电脑就可以干的工作有哪些?试试这些项目

现在几乎人人都有手机,吃饭时候看,睡觉的时候看,上个厕所也在看,有次坐地铁,发现很多上学的初中生、小学生都拿着手机,手机档次还挺高,都是最新的苹果、华为款的手机。反之再看看使用电脑的人又…

Linux——信号知识归纳(上)

一.信号概念(一).大致认识信号是操作系统控制进程的一种方式,比如ctrl C、栈溢出程序崩溃、kill -9命令等底层都是操作系统发送信号给进程执行特定操作。因此,所有信号就底层而言都是操作系统发出的。同时,进程接收到信…

Java设计模式中桥接模式是什么/桥接模式有什么用,怎么运用桥接模式

继续整理记录这段时间来的收获,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用! 5.5 桥接模式 5.5.1 定义 将抽象与实现分离,使他们可以独立变化,即用组合关系来代替继承关系实现,从而降低抽象与实现两个可变…

相参雷达(CSDN_0004_20220909)

文章编号:CSDN_0004_20220909 雷达信号处理中的一个基本操作是对样本进行积累,以提高SNR。积累的方式包括相参积累和非相参积累。相参积累是对复数信号(既包括幅度又包括相位)相加积累;非相参积累是对信号的幅度&#…

【时间复杂度与空间复杂度】衡量算法的标准,这篇文章让大家更深刻的理解时间复杂度和空间复杂度

前言: 大家好,我是良辰丫,今天和大家一起讨论一下时间复杂度与空间复杂度,往往来说,这两者是衡量算法好坏的标准,举个简单的例子,你想吃核桃了,用牙能弄开,用夹子也能弄开…

SAP灵活工作流场景配置及Demo测试

首先确保对应流程模板处于激活状态,并且事件已经激活 1. 在Fiori app 管理工作流中配置流程场景 地址:/sap/bc/ui2/flp?sap-client100&sap-languageZH#Workflow-showList 选择创建的灵活工作流模板,点击添加,开始配置场景 维护基本属性及…

JavaSE学习day2_02, IDEA的使用(重点)

4. idea 4.1 什么是idea? 是Java的集成开发工具,该工具把编写代码,编译,运行,调试等都集中在一起了。目前绝大多数企业编程用的执行环境. 特点: 自动保存、自动编译。 我们在使用的时候主要注重于两步…

SpringCloud微服务!!

目录 1.系统架构的演变 2.微服务简介 1.什么是微服务? 2.实现微服务的技术方案有哪些? 3.什么是SpringCloud? 4.微服务技术点【重点】 4.1服务治理、服务注册、服务发现 4.2 Eureka注册中心 4.2.1 Eureka介绍 4.2.2 Eureka 使用入门 4.2.3 Eureka的…

13_1、Java的IO流之File类的使用

一、File类的理解1、File的对象代表着一个文件或者一个文件目录。2、File类在java.io包下。3、File类中涉及文件或文件目录相关的创建、删除、重命名、修改时间、文件大小等方法,并未涉及到对文件内部的内容的读取、写入等操作,如果需要对文件的内容进行…

2023年玩兔年小游戏《兔兔保卫萝卜战》赢新年祝福「钱兔无量」

PS:粉丝可以免费领源码,私信我或者评论666即可~~~~~~~~ 导读 | 世界杯虽已闭幕,但其带给我们的精彩,仿佛就在昨天,想一想,还是有一种爽劲,不知道大家是否也这样?转眼就到了2023年&a…

Java框架:Mybatis

文章目录一、Mybatis概述1.1概念1.2优点与缺点1.3MyBatis和Hibernate的区别1.4Mybatis的核心对象1.5Mybatis执行流程三、Mybatis的快速使用3.1开发环境3.2 创建一个maven项目3.3添加Maven依赖3.4MySQL创建user表3.5创建数据源database.properties文件3.6编写mybatis-config.xml…

H13-531云计算HCIE V2.0——1~400常错题和知识点总结

1~100 35、FusionStorage Block无法是被配置RAID的磁盘,一定要将RAID信息删除后, Fusionstrage block才能识别到这些磁盘? 错误 61、Ceilometer监控通过在计算节点部署Compute服务 84.(多选)在配置 FusionSphere OpenStack 时,可以用来实…

商务BD干多了,做一个无情的微信发消息机器人帮我发消息吧

1. 有没有那种做微信的伙伴,每天需要定点定时发消息? 2. 有没有那种做电商商务的朋友,每天需要发消息提醒达人商务们? 3. 有没有那种需要定时定点打卡,需要提醒自己要干啥的兄弟姐妹?** 那么有没有大冤种去…

如何获取电脑软件图标和app图标

如何获取电脑软件图标和app图标大家在写博客或者作图的时候经常会需要找到电脑软件图标或者app图标,如果从网上找有的图标并不清楚,今天给大家分享下,怎么快速的获取电脑软件图标和app图标,得到的图标也比较清楚。电脑软件图标获取…

【操作系统】操作系统的Buffer和Cache

文章目录1.Buffer和Cache的区别2.磁盘和文件写入操作案例3.磁盘和文件读取操作案例4.Cache和Buffer的命中案例1.Buffer和Cache的区别 (1)什么是Buffer Buffer指Linux内存的 Buffer cache(缓冲区)。Buffer为了让不同的速度的设备…

【迅为iMX6Q】开发板 Linux 5.15.71 SD卡 启动

开发环境 win10 64位VMware Workstation Pro 16ubuntu 22.04【迅为imx6q】开发板, 2G DDR linux-imx 下载 使用 NXP 官方提供的 linux-imx,代码地址为: https://github.com/nxp-imx/linux-imx 使用 git 下载 linux-imx, git cl…

Linux应用编程---6.无名管道

Linux应用编程—6.无名管道 6.1 pipe()函数使用详情 ​ 管道是进程之间进行通讯的一种方式。管道有两种,分别是:无名管道和有名管道。先看无名管道。管道创建函数是pipe(),在Linux终端输入man pipe。 图1 pipe()函数详情NAMEpipe, pipe2 - …