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体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
1月前
|
自然语言处理 Java 网络架构
elasticsearch学习三:elasticsearch-ik分词器的自定义配置 分词内容
这篇文章是关于如何自定义Elasticsearch的ik分词器配置以满足特定的中文分词需求。
123 0
elasticsearch学习三:elasticsearch-ik分词器的自定义配置 分词内容
|
1月前
|
JSON Java 网络架构
elasticsearch学习四:使用springboot整合 rest 进行搭建elasticsearch服务
这篇文章介绍了如何使用Spring Boot整合REST方式来搭建和操作Elasticsearch服务。
121 4
elasticsearch学习四:使用springboot整合 rest 进行搭建elasticsearch服务
|
1月前
|
Java Maven Kotlin
vertx的学习总结7之用kotlin 与vertx搞一个简单的http
本文介绍了如何使用Kotlin和Vert.x创建一个简单的HTTP服务器,包括设置路由、处理GET和POST请求,以及如何使用HTML表单发送数据。
33 2
vertx的学习总结7之用kotlin 与vertx搞一个简单的http
|
1月前
|
自然语言处理 搜索推荐 关系型数据库
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
这篇文章是关于Elasticsearch全文搜索引擎的学习指南,涵盖了基本概念、命令风格、索引操作、分词器使用,以及数据的增加、修改、删除和查询等操作。
20 0
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
|
1月前
|
Web App开发 JavaScript Java
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
这篇文章是关于如何使用Spring Boot整合Elasticsearch,并通过REST客户端操作Elasticsearch,实现一个简单的搜索前后端,以及如何爬取京东数据到Elasticsearch的案例教程。
174 0
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
|
1月前
|
自然语言处理 Java Maven
elasticsearch学习二:使用springboot整合TransportClient 进行搭建elasticsearch服务
这篇博客介绍了如何使用Spring Boot整合TransportClient搭建Elasticsearch服务,包括项目创建、Maven依赖、业务代码和测试示例。
95 0
elasticsearch学习二:使用springboot整合TransportClient 进行搭建elasticsearch服务
|
1月前
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
109 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
|
4月前
|
SQL JavaScript 前端开发
函数计算操作报错合集之HTTP触发器报404错误,是什么导致的
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
4月前
|
文字识别 前端开发 API
印刷文字识别操作报错合集之通过HTTPS连接到OCR服务的API时报错,该如何处理
在使用印刷文字识别(OCR)服务时,可能会遇到各种错误。例如:1.Java异常、2.配置文件错误、3.服务未开通、4.HTTP错误码、5.权限问题(403 Forbidden)、6.调用拒绝(Refused)、7.智能纠错问题、8.图片质量或格式问题,以下是一些常见错误及其可能的原因和解决方案的合集。
|
4月前
|
存储 DataWorks Java
DataWorks操作报错合集之出现HTTP 401错误,表示什么意思
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。

热门文章

最新文章