ElasticSearch学习(一):HTTP操作ElasticSearch

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 为了操作方便,我直接使用了Windows下的ElasticSearch。需要注意的一点是,ElasticSearch8以上的版本是基于java17的。 我使用的是7.6.2的版本。下载好压缩包之后,解压,进入bin目录,双击elasticsearch.bat文件即可启动。

为了操作方便,我直接使用了Windows下的ElasticSearch。需要注意的一点是,ElasticSearch8以上的版本是基于java17的。


我使用的是7.6.2的版本。下载好压缩包之后,解压,进入bin目录,双击elasticsearch.bat文件即可启动。


启动后访问 http://localhost:9200/ ,看看能否出现正常的页面:

79f5f9ca10bc464bae1c32197ed8c197.png


如果能出现,说明已经正常启动了。


一、索引操作



1、创建索引

       

在ElasticSearch中创建索引 就等同于 在关系型数据库中创建数据库。


首先我们打开postman发送请求

http://127.0.0.1:9200/shopping

cd3730102dda414fbc22c5072b3785d3.png


需要注意的是,创建索引使用的是PUT请求

     

有回应说明创建成功了:


395a2ed401ce46e3aa53ccefec92c9dd.png


2、查看索引

     

查看shopping索引,命令不变,只不过要把请求方式改为GET请求。

81be7763d0ab4ea58163b90e1807c5d7.png


3、查看全部索引

     

使用GET命令:

http://127.0.0.1:9200/_cat/indices?v


请求路径中的_cat 表示查看的意思,indices 表示索引,所以整体含义就是查看当前 ES 服务器中的所有索引,就好像 MySQL 中的 show tables 的感觉。

9f8602fc0cfc463485beef5ae1dcec42.png


因为我们只创建了shopping这一个索引,所以只会显示一个索引。

a07b77bb77cf47f2b8712f5633d4b1ca.png


对于其中表头的含义:

79885cca72ee4b998ea2139f3f1a7bde.png5250e244c8594c5a9d0e309eccefd4d6.png


四、删除索引


     

路径还是不变,请求改为DELETE,即可删除shopping索引。

f11d7cff0bff4e719e7fcc8a65eb6ce2.png1cb172b7e163407793a1681e15b125c8.png

再看看索引还在不在,查看全部索引


230a8e99ef654fbc9f67b145443a0e5a.png


二、文档操作



1、创建文档

       

创建文档使用POST请求。为什么和创建索引不同呢?是因为创建文档每次会生成随机的id,每次的id都不一样,而PUT请求是幂等性的,所以不能用PUT请求。

http://127.0.0.1:9200/shopping/_doc/1001


将_doc换为_created也可以。

{
    "title":"小米手机", 
    "category":"小米", 
    "images":"http://www.gulixueyuan.com/xm.jpg", 
    "price":3999.00 
}


055e21edf2ca4976ac0b84057fbe9abb.png

发送请求后的响应体:6dd21026fdfa418ea279b58347780fef.png


而如果我们要使用这个id来查询的话,非常不方便。因此在创建的时候,我们可以为其自定义id。

http://127.0.0.1:9200/shopping/_doc/1001

4b839e58e7804c349eef46244cbe4872.png


而如果这样操作,每次的id就是一样的了,因此我们也可以使用PUT请求。


2、查询文档


命令不变,改为GET请求即可。


13a62fcf91e1431da22bcd94c7512441.png


3、修改文档

     

命令和创建一样,请求类型为POST,将要改的地方在请求体中修改。

{
    "title":"小米手机", 
    "category":"小米", 
    "images":"http://www.gulixueyuan.com/xm.jpg", 
    "price":4000.00 
}


68fed4401da844559da27d6e246eeba6.png


再去查询一下,发现已经更改成功了。

 

4、局部修改文档


一般来说,我们都不需要修改文档中所有的东西,所以我们可以只写要修改的部分。


因为这样的操作不是幂等性,所以只能用POST请求。


如果写为_doc有可能会被认为是新增,所以写为_update,明确表示这是修改操作。

http://127.0.0.1:9200/shopping/_update/1001


{
    "doc":{
        "price":3000.00
    }
}

c6bfd4a5a56643bea74afe8a1c73a3cd.png


5、删除文档

     

命令与创建文档相同,请求方式为DELETE


三、高级查询


     

ElasticSearch最核心的操作还是查询。


1、全量查询

     

GET请求

http://127.0.0.1:9200/shopping/_search


查询结果:

{
    "took": 2,
    "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",
                "_type": "_doc",
                "_id": "pXrb6H8BMLN1rdkSJX2N",
                "_score": 1.0,
                "_source": {
                    "title": "小米手机",
                    "category": "小米",
                    "images": "http://www.gulixueyuan.com/xm.jpg",
                    "price": 3999.00
                }
            },
            {
                "_index": "shopping",
                "_type": "_doc",
                "_id": "1001",
                "_score": 1.0,
                "_source": {
                    "title": "小米手机",
                    "category": "小米",
                    "images": "http://www.gulixueyuan.com/xm.jpg",
                    "price": 3000.0
                }
            }
        ]
    }
}



2、条件查询


http://127.0.0.1:9200/shopping/_search?q=category:小米



q后跟条件

     

但是一般来说,还是把条件放在请求体中。

     

使用的命令与全量查询一样,请求体如下:

{
    "query":{
        "match":{
            "category":"小米"
        }
    }
}


3、分页查询

     

命令和全量查询一致,请求体如下:

{
    "query":{
        "match_all":{
        }
    },
    "from":0,
    "size":2
}


from表示从第几页开始,size表示一页显示几个数据。


4、多条件查询


命令与全量查询命令相同,请求体如下:

{
  "query" : {
    "bool" : {
      "must" : [
        {
          "match" : {
            "category":"小米"
          }
        },
        {
          "match" : {
            "price":3999.00
          }
        }
      ]
    }
  }
}



将查找所有条件都符合的数据(相当于and)。

如果将must改为should,将查找满足一个或多个条件的数据(相当于or)。



相关实践学习
利用Elasticsearch实现地理位置查询
本实验将分别介绍如何使用Elasticsearch7.10版本进行全文检索、多语言检索和地理位置查询三个Elasticsearch基础检索子场景的实现。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
2月前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
35 0
|
2月前
|
监控 Unix 应用服务中间件
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
|
6天前
|
缓存 负载均衡 NoSQL
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
16 1
|
23天前
|
JSON DataWorks 关系型数据库
DataWorks操作报错合集之同步Elasticsearch数据报错:Cat response did not contain a JSON Array,是什么导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
6天前
|
前端开发 计算机视觉
视觉智能开放平台操作报错合集之人脸对比1:1,采用web前端直接调用,使用了base64处理图片,提示http错误码414,该如何处理
在使用视觉智能开放平台时,可能会遇到各种错误和问题。虽然具体的错误代码和消息会因平台而异,但以下是一些常见错误类型及其可能的原因和解决策略的概述,包括但不限于:1. 认证错误、2. 请求参数错误、3. 资源超限、4. 图像质量问题、5. 服务不可用、6. 模型不支持的场景、7. 网络连接问题,这有助于快速定位和解决问题。
|
18天前
|
资源调度 分布式计算 Hadoop
实时计算 Flink版产品使用问题之yarn session模式中启动的任务链接是http IP,想把IP映射为主机hadoop,该怎么操作
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
2月前
|
Kubernetes 关系型数据库 MySQL
实时计算 Flink版产品使用合集之在Kubernetes(k8s)中同步MySQL变更到Elasticsearch该怎么操作
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
2月前
|
SQL DataWorks Java
DataWorks操作报错合集之在阿里云 DataWorks 中,代码在开发测试阶段能够成功运行,但在提交后失败并报错“不支持https”如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
DataWorks操作报错合集之在阿里云 DataWorks 中,代码在开发测试阶段能够成功运行,但在提交后失败并报错“不支持https”如何解决
|
23天前
|
存储 分布式计算 大数据
MaxCompute操作报错合集之通过UDF调用异常(其他使用http调用正常)。报错:java.lang.NoSuchMethodError:是什么导致的
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
2月前
|
存储 缓存 自然语言处理
Elasticsearch框架学习的难点和重点有哪些
Elasticsearch是基于Lucene的开源搜索引擎,广泛应用于全文检索和日志分析。学习重点包括理解节点、集群、索引、分片和副本等基本概念,掌握数据索引、查询DSL、聚合和性能优化。倒排索引和分词器是全文搜索的核心,集群管理和监控对于稳定性至关重要。实践中需根据数据量和查询模式优化分片策略,利用缓存提升搜索性能。学习Elasticsearch要结合实际项目,关注官方文档和社区资源。【5月更文挑战第6天】