ES8基本命令

news2024/12/28 5:05:50

ElasticSearch是面向文档型数据库

构造类似于数据库:indexes(索引库=数据库)-->types(类型=表)-->documents(文档=行)-->field(字段=字段)

但是在7.X开始,Type已经开始被废弃。

正排索引:根据主键id关联内容,然后再找关键字。

倒排索引:根据关键字查询主键id。

选择Solr还是ElasticSearch

  • 由于易于使用,Elasticsearch 在新开发者中更受欢迎。一个下载和一个命令就可以启动一切。
  • 如果除了搜索文本之外还需要它来处理分析查询,Elasticsearch 是更好的选择。
  • 如果需要分布式索引,则需要选择 Elasticsearch。对于需要良好可伸缩性和以及性能分布式环境,Elasticsearch 是更好的选择。
  • Elasticsearch 在开源日志管理用例中占据主导地位,许多组织在 Elasticsearch 中索引它们的日志以使其可搜索。
  • 如果你喜欢监控和指标,那么请使用 Elasticsearch,因为相对于 Solr,Elasticsearch 暴露了更多的关键指标。

ES使用问题

SSL认证问题

Windows 环境中出现下面的错误信息,是因为开启了 SSL 认证,可以将SSL认证关闭,修改 config/elasticsearch.yml 文件,将 enabled 的值修改为 false

xpack.security.http.ssl: 
enabled: false 
keystore.path: certs/http.p12

忘记密码

bin目录下面打开cmd

修改命令:elasticsearch-reset-password --username 用户名 -i

回车以后输入y 再输入两次新密码

ES索引相关基础操作

创建索引

创建索引只能使用PUT请求不能使用POST请求,PUT有幂等性特性,而POST没有。

PUT请求:http://localhost:9200/shopping (多次相同请求除了第一会成功,后面的都会提示已存在异常,因为是同一进程)

shopping:索引名。

{
    "acknowledged": true,
    "shards_acknowledged": true,
    "index": "shopping"
}

获取索引信息

GET请求:http://localhost:9200/shopping

shopping:索引名

{
  "shopping": {
    "aliases": {},
    "mappings": {},
    "settings": {
      "index": {
        "routing": {
          "allocation": {
            "include": {
              "_tier_preference": "data_content"
            }
          }
        },
        "number_of_shards": "1",
        "provided_name": "shopping",
        "creation_date": "1683357102325",
        "number_of_replicas": "1",
        "uuid": "oTVh5cIrS7WomyytmArs0g",
        "version": {
          "created": "8070199"
        }
      }
    }
  }
}

删除索引

DELETE请求:https://localhost:9200/shopping

shopping:索引名

{
  "acknowledged": true
}

查询所有索引

GET请求:http://localhost:9200/_cat/indices?v

health status index    uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   shopping 3XaaMCiWT5CJqu2uwZh2gA   1   1          0            0       225b           225b

ES文档相关操作

从7.X版本以后Type被废弃,所有文档直接存储在索引内。

配置映射关系

PUT请求:http://localhost:9200/shopping/_mapping

配置映射关系需要在创建索引完成后,在添加数据之前进行配置,否则字段的属性类型是不可修改的,默认是text

{
    "properties":{
        "usename":{        //字段名
            "type": "text",  //可以分词
            "index": true   //可以通过索引查询
        },
        "sex": {
            "type": "keyword",  //不可以分词,需要完全匹配才能查到
            "index": true   //可以通过索引查询
        },
        "age": {
            "type": "keyword",  //不可以分词,需要完全匹配才能查到
            "index": false   //不可以通过索引查询(不能查这个字段)
        }
    }
}

创建文档

创建文档时必需要有json参数

随机id形式创建文档只能使用POST请求不能使用PUT请求,否则会报异常。

POST请求:随机id:http://localhost:9200/shopping/_doc

另外相同参数可以进行多次请求,每次请求返回的id是不同的。id是可以自定义的,只需在请求后面加自定义的id即可。

自定义id形式创建文档既能使用POST请求又能使用PUT请求。

自定义id:http://localhost:9200/shopping/_doc/23333

注:自定义id形式创建文档时_doc可以替换为_create,随机id形式不可以。自定义id形式多次请求,除第一次外都为修改,而随机id形式为多次创建且id不同。

JSON参数:{
  "username": "阿桃",
  "password": "123456",
  "sex": "man",
  "age": "26"
}
随机id形式请求返回结果:{
    "_index": "shopping",
    "_id": "sxQC8IcBaTXEOVHb3Nge",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 0,
    "_primary_term": 1
}
自定义id形式请求返回结果{
    "_index": "shopping",
    "_id": "23333",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 1,
    "_primary_term": 1
}

查询文档:主键查询

GET请求:http://localhost:9200/shopping/_doc/23333

//查询成功
{
    "_index": "shopping",
    "_id": "23333",
    "_version": 3,
    "_seq_no": 9,
    "_primary_term": 1,
    "found": true, 
    "_source": {
        "username": "阿桃",
        "password": "123456",
        "sex": "man",
        "age": "26"
    }
}
//查询失败
{
    "_index": "shopping",
    "_id": "23336",
    "found": false
}

查询文档:单条件查询

请求路径方式:GET请求:http://localhost:9200/shopping/_search?q=username:大豪(中文时容易乱码)

{
    "took": 888,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 1,
            "relation": "eq"
        },
        "max_score": 3.583519,
        "hits": [
            {
                "_index": "shopping",
                "_id": "23333",
                "_score": 3.583519,
                "_source": {
                    "username": "大豪",
                    "password": "123456",
                    "sex": "man",
                    "age": "26"
                }
            }
        ]
    }
}

请求体方式:GET请求:http://localhost:9200/shopping/_search (GET,POST都可以使用)

查询时es会把关键字进行分词,比如"大桃",es会分成"大"和"桃",会把大豪和阿桃都查询出来。

如果想要完全匹配而不分词需要把“match”换成“match_phrase”即可

JSON参数格式
{
    "query":{
        "match":{
            "username":"大豪"
        }
    },
    "from": 0,  //分页设置 起始条 计算方式:(页码-1)*页大小  不需要分页时from和size不需要设置
    "size": 3,  //页大小
    "_source": ["username","age"],   //过滤,括号内填想要显示的字段  全显示时无需设置该属性
    "sort":{     //排序设置   不需要排序时无需设置
        "age":{  //需要排序的属性
          "order": "asc"
        }
    },
    "highlight":{    //高亮显示
        "fields":{   //fields内填写要高亮显示的字段
            "username":{}   
        }
    }
}
返回结果
{
    "took": 2,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 1,
            "relation": "eq"
        },
        "max_score": 3.583519,
        "hits": [
            {
                "_index": "shopping",
                "_id": "23333",
                "_score": 3.583519,
                "_source": {
                    "username": "大豪",
                    "password": "123456",
                    "sex": "man",
                    "age": "26"
                }
            }
        ]
    }
}

查询文档:多条件查询

GET请求:http://localhost:9200/shopping/_search

{
    "query":{
        "bool":{
            "must":[  //must是and的意思,则should是or的意思
                {
                    "match": {
                        "username": "大豪"
                    }
                },
                {
                    "match": {
                        "password":"123456"
                    }
                }
            ],
            "filter":{   //范围筛选
                "range":{
                    "age":{
                      	"gt": 25     //大于、小于、等于、大于等于、小于等于
                  	}
              	}
        		}
        }
    }
}

查询全部文档

GET请求:http://localhost:9200/shopping/_search

也可以加一个JSON参数查询(可加可不加)
{
    "query":{
        "match_all":{

        }
    },
  "from": 0,  //分页设置 起始条 计算方式:(页码-1)*页大小  不需要分页时from和size不需要设置
  "size": 3,  //页大小
  "_source": ["username","age"],   //过滤,括号内填想要显示的字段  全显示时无需设置该属性
  "sort":{     //排序设置   不需要排序时无需设置
      "age":{  //需要排序的属性
        "order": "asc"
      }
  }
}
返回结果
{
    "took": 75,//查询耗费时间 ms
    "timed_out": false, //是否超时
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 2,
            "relation": "eq"
        },
        "max_score": 1.0,
        "hits": [//所有查询到的结果
            {
                "_index": "shopping",
                "_id": "23333",
                "_score": 1.0,
                "_source": {
                    "username": "阿桃",
                    "password": "123456",
                    "sex": "man",
                    "age": "26"
                }
            },
            {
                "_index": "shopping",
                "_id": "tBQS8IcBaTXEOVHb0tiQ",
                "_score": 1.0,
                "_source": {
                    "username": "阿桃",
                    "password": "123456",
                    "sex": "man",
                    "age": "26"
                }
            }
        ]
    }
}

聚合查询

GET请求:http://localhost:9200/shopping/_search

//eg.1 平均值
{
    "aggs":{  //聚合操作
        "price_avg":{   //自定义名称
            "avg":{  //平均值
                "field":"age"  //字段名
            }
        }
    },
    "size":0   //size设置成0不显示原数据,否则会把原数据显示出来
}
//eg.2 分组
{
    "aggs":{  //聚合操作
        "price_group":{   //自定义名称
            "terms":{  //平均值
                "field":"age"  //字段名
            }
        }
    },
    "size":0   //size设置成0不显示原数据,否则会把原数据显示出来
}

修改文档

  • 全量修改

操作和上述的自定义id形式创建文档相同。

  • 局部修改

POST请求:http://127.0.0.1:9200/shopping/_update/23333

JSON参数格式
{
    "doc":{
        "username":"大豪"
    }
}
返回结果
{
    "_index": "shopping",
    "_id": "23333",
    "_version": 4,
    "result": "updated",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 13,
    "_primary_term": 1
}

删除文档

DELETE请求:http://localhost:9200/shopping/_doc/23333

{
    "_index": "shopping",
    "_id": "23333",
    "_version": 5,
    "result": "deleted",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 14,
    "_primary_term": 1
}

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

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

相关文章

微服务—Redis实用篇-黑马头条项目-达人探店功能(使用set与zset实现)

微服务—Redis实用篇-黑马头条项目-达人探店功能(使用set与zset实现) 1、达人探店 1.1、达人探店-发布探店笔记 发布探店笔记 探店笔记类似点评网站的评价,往往是图文结合。对应的表有两个: tb_blog:探店笔记表,包含笔记中的标…

Liunx基础命令 - mkdir命令

mkdir命令 – 创建目录文件 mkdir命令来自英文词组”make directories“的缩写,其功能是用来创建目录文件。使用方法简单,但需要注意若要创建的目标目录已经存在,则会提示已存在而不继续创建,不覆盖已有文件。而目录不存在&#…

路径规划算法:基于蜉蝣优化的路径规划算法- 附代码

路径规划算法:基于蜉蝣优化的路径规划算法- 附代码 文章目录 路径规划算法:基于蜉蝣优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化算法蜉蝣…

Linux 无网环境下离线安装rpm

概述 搭建了私有yum仓库,想实现无网环境下Docker rpm离线安装的方法 1. 使用和配置清华源 2. 免安装下载rpm包及其依赖 3. 寻找特定的rpm包并补全依赖 清华的清华源 名称连接帮助文档备注主页清华大学开源软件镜像站 | Tsinghua Open Source MirrorAOSP | 镜像站使…

Swagger 3.0 与 Springboot 集成

springboot版本:2.3.12.RELEASE swagger版本:3.0.0 1&#xff1a;pom文件添加如下代码: <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version>&…

离线安装 Docker + Docker registry(Docker仓库)

概述 通过私有yum仓库安装docker 具体内容&#xff1a; 1. 构建私有镜像仓库 2. 准备rpm包 3. 安装部署 4. ansible 安装 卸载 5. shell 脚本安装 卸载 6. 网页连接 7. 构建docker 私有仓库 1. 构建私有镜像仓库 构建简单的yum私有仓库请参考如下文档 http://t.csdn.cn/22bmb…

用chatGPT写chatGPT教学方案

最近从机器学习的原理、数学推理、主流模型架构、chatGPT的Prompt策略&#xff0c;也实际体验了各种AIGC工具&#xff0c;算是较为系统的学习了chatGPT的前世今身&#xff0c;想着有很多人应该跟我一样&#xff0c;没有编程基础、也没有成为chatGPT专家的希望&#xff0c;仅仅通…

LeetCode_Day3 | 反转链表/移除链表的元素/设计个链表

LeetCode_链表 203.移除链表元素1. 题目描述2. 直接使用原表删除1. 思路2. 代码实现 3. 使用虚拟头节点删除1. 思路2. 代码实现 707.设计链表1.题目描述2.单链表&#xff1a;虚拟头节点设计1. 思路2. 代码实现及部分逻辑解释3. 需要注意的点 206.反转链表1.题目描述2. 双指针法…

BIO阻塞模型

作者&#xff1a;V7 博客&#xff1a;https://www.jvmstack.cn 一碗鸡汤 少年辛苦终身事&#xff0c;莫向光阴惰寸功。 —— 杜荀鹤 同步阻塞IO 在介绍阻塞和非阻塞之前先说明一下同步和异步。我们可以将同步和异步看做是发起IO请求的两种方式。同步IO指的是用户空间&…

项目美术部门敏捷开发流程及工具

前言 在项目开发中&#xff0c;针对美术部门的特性和工作风格&#xff0c;合理使用多种工具进行项目管理和进度控制非常必要。如果项目执行中有异地协作、美术内/外包、多项目并行的情况&#xff0c;正确的规划和管理的优势会更加凸显。 而合理使用整套的综合管理工具会让项目…

Day969.如何拆分代码 -遗留系统现代化实战

如何拆分代码 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于如何拆分代码的内容。 当完成了项目的战略设计&#xff0c;大体设计出目标架构&#xff0c;又根据系统的现状&#xff0c;决定采用“战术分叉”的方式进行微服务拆分之后&#xff0c;接下来的难点就变成…

用GPT-4 写2022年天津高考作文能得多少分?

正文共 792 字&#xff0c;阅读大约需要 3 分钟 学生必备技巧&#xff0c;您将在3分钟后获得以下超能力&#xff1a; 积累作文素材 Beezy评级 &#xff1a;B级 *经过简单的寻找&#xff0c; 大部分人能立刻掌握。主要节省时间。 推荐人 | Kim 编辑者 | Linda ●图片由Lexica …

vue工程搭建

1&#xff1a;查看vue及npm版本&#xff1a; 2&#xff1a;执行npm init nuxt-app <project-name>语句&#xff1a; 若出现npm ERR! code ENOLOCAL 请执行如下语句&#xff1a; npm cache verify npm cache clean --force npm i -g npm npm install -g cnpm --regis…

数据库(mysql语句)循环语句

例题1&#xff1a; 20到50之间能被5除余1的所有自然数的和 EDECLARE i int DECLARE s int SET s0 SET i20 白WHILE i <50 BEGIN IF(i%51) SET s s i SET ii1 END PRINT20到50之间能被5除余1的所有自然数的和是cast(s as varchar(20)) 例题2&#xff1a; 实现如下图 代码…

设计模式之门面模式(Facade Pattern 外观模式)

一、模式定义 门面模式(Facade Pattern)&#xff1a;外部与一个子系统的通信必须通过一个统一的外观对象进行&#xff0c;为子系统中的一组接口提供一个一致的界面&#xff0c;外观模式定义了一个高层接口&#xff0c;这个接口使得这一子系统更加容易使用。门面模式又称为外观…

中国南方Oracle用户组沙龙活动:大环境下的Oracle数据库的机遇与挑战

2023年03月12日(周日)在杭州索菲特西湖大酒店 (浙江省杭州市上城区西湖大道333 号)&#xff0c;中国南方Oracle用户组创始人之一&#xff1a;周亮&#xff08;zhou liang&#xff09;组织举办了主题为《大环境下的Oracle数据库的机遇与挑战》活动&#xff0c;大约有50名左右的人…

YMatrix 5.0 故障自动转移功能新实现,运维更方便!

前言 分布式数据库一般都实现了数据多副本的存储以保证数据的高可用性。在多副本存储的基础上&#xff0c;通过切换活跃的存储副本来实现故障转移&#xff0c;是常见的做法。 YMatrix 5.0 实现了在数据库集群所有数据分片上的故障自动转移&#xff0c;完全实现了数据库集群的…

一文带你深入了解分布式数据的复制原理!!

在分布式数据系统中&#xff0c;复制是一种重要的能力。简单来说&#xff0c;复制就是将数据的副本存储在多个位置&#xff0c;通常是在不同的服务器或节点上。这样做有几个关键的优点&#xff1a; 使得数据与用户在地理上接近&#xff08;从而减少延迟&#xff09;&#xff0…

渗透测试--3.1嗅探欺骗攻击

目录 1.中间人攻击 2. 社会工程学攻击 SET使用实例——建立克隆钓鱼网站收集目标凭证 SET工具集之木马欺骗实战反弹链接 后渗透阶段 钓鱼邮件 总结 1.中间人攻击 中间人攻击&#xff08;Man-in-the-middle attack&#xff0c;简称MITM&#xff09;是一种常见的网络攻击…

一文带你完整了解数据的编码!!

数据编码是将数据转换为计算机可读取和处理的二进制格式的过程。在数据存储中&#xff0c;正确的数据编码非常重要&#xff0c;因为它能够保证数据的完整性、可靠性和可读性。 数据编码可以确保数据在存储过程中不会发生错误。通过使用适当的数据编码规则&#xff0c;可以防止…