Elasticsearch基本操作-RESTful操作2

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Elasticsearch基本操作-RESTful操作

条件删除文档

一般删除数据都是根据文档的唯一性标识进行删除,实际操作时,也可以根据条件对多条数据进行删除。


1.首先分别增加多条数据:

{
  "query":{
    "match":{
      "price":4000.00
    }
  }
}

fd5dbd629c674861bc2da42715a9aa1b.png

dd4a771dec374fd6b40421a625fedb2a.png


POST 请求 :http://127.0.0.1:9200/shopping/_delete_by_query

请求体内容为:

{
  "query":{
    "match":{
      "price":4000.00
    }
  }
}

a651d87ad8f440198d96884c765924af.png

{
  "took"【耗时】: 6,
  "timed_out"【是否超时】: false,
  "total"【总数】: 1,
  "deleted"【删除数量】: 1,
  "batches": 1,
  "version_conflicts": 0,
  "noops": 0,
  "retries": {
    "bulk": 0,
    "search": 0
  },
  "throttled_millis": 0,
  "requests_per_second": -1,
  "throttled_until_millis": 0,
  "failures": []
}

4.3 映射操作

有了索引库,等于有了数据库中的 database。


接下来就需要建索引库(index)中的映射了,类似于数据库(database)中的表结构(table)。创建数据库表需要设置字段名称,类型,长度,约束等;索引库也一样,需要知道这个类型下有哪些字段,每个字段有哪些约束信息,这就叫做映射(mapping)。


创建映射

创建索引student

PUT 请求 :http://127.0.0.1:9200/student

创建映射

PUT 请求 :http://127.0.0.1:9200/student/_mapping

4caa88f36f614a06b70d9a6dddee21b4.png

映射数据说明:

字段名:任意填写,下面指定许多属性,例如:title、subtitle、images、price

type:类型,Elasticsearch 中支持的数据类型非常丰富,说几个关键的:

String 类型,又分两种:

text:可分词

keyword:不可分词,数据会作为完整字段进行匹配

Numerical:数值类型,分两类

基本数据类型:long、integer、short、byte、double、float、half_float

浮点数的高精度类型:scaled_float

Date:日期类型

Array:数组类型

Object:对象

index:是否索引,默认为 true,也就是说你不进行任何配置,所有字段都会被索引。

true:字段会被索引,则可以用来进行搜索

false:字段不会被索引,不能用来搜索

store:是否将数据进行独立存储,默认为 false

原始的文本会存储在_source 里面,默认情况下其他提取出来的字段都不是独立存储的,是从_source 里面提取出来的。当然你也可以独立的存储某个字段,只要设置"store": true 即可,获取独立存储的字段要比从_source 中解析快得多,但是也会占用更多的空间,所以要根据实际业务需求来设置。

analyzer:分词器,这里的 ik_max_word 即使用 ik 分词器,后面会有专门的章节学习

查看映射

GET 请求 :http://127.0.0.1:9200/student/_mapping

721f78b320e94f39bc9f9f3bf633b627.png


索引映射关联

PUT 请求 :http://127.0.0.1:9200/student1

{
  "settings": {},
  "mappings": {
    "properties": {
      "name": {
        "type": "text",
        "index": true
      },
      "sex": {
        "type": "text",
        "index": false
      },
      "age": {
        "type": "long",
        "index": false
      }
    }
  }
}

相当于创建索引的时候进行映射关联

8ee8993d49044963980c40ddf94d945d.png


4.4 高级查询

Elasticsearch 提供了基于 JSON 提供完整的查询 DSL 来定义查询

定义数据 :

# POST /student/_doc/1001
{
  "name":"zhangsan",
  "nickname":"zhangsan",
  "sex":"男",
  "age":30
}
# POST /student/_doc/1002
{
  "name":"lisi",
  "nickname":"lisi",
  "sex":"男",
  "age":20
}
# POST /student/_doc/1003
{
  "name":"wangwu",
  "nickname":"wangwu",
  "sex":"女",
  "age":40
}
# POST /student/_doc/1004
{
  "name":"zhangsan1",
  "nickname":"zhangsan1",
  "sex":"女",
  "age":50
}
# POST /student/_doc/1005
{
  "name":"zhangsan2",
  "nickname":"zhangsan2",
  "sex":"女",
  "age":30
}

查看索引库中所有文档

GET/POST 请求 :http://127.0.0.1:9200/_search

b0431c38a045493db0187c65b3f45102.png


查看指定索引下所有文档

GET/POST 请求 :http://127.0.0.1:9200/student/_search


e5797899f71445f799818bcf60a51df8.png

{
  "took"【查询花费时间,单位毫秒】: 1,
  "timed_out"【是否超时】: false,
  "_shards"【分片信息】: {
    "total"【总数】: 1,
    "successful"【成功】: 1,
    "skipped"【忽略】: 0,
    "failed"【失败】: 0
  },
  "hits"【搜索命中结果】: {
    "total"【搜索条件匹配的文档总数】: {
      "value"【总命中计数的值】: 5,
      "relation"【计数规则】: "eq" # eq 表示计数准确, gte 表示计数不准确
    },
    "max_score"【匹配度分值】: 1,
    "hits"【命中结果集合】: [
      ... ...
    ]
  }
}

条件匹配查询

2.路径拼接参数查询(推荐第二种)

GET/POST 请求 :http://127.0.0.1:9200/student/_search?q=name:zhangsan

参数 说明
代码增加查询参数
q 表示查询的意思
name 查询的字段名

e6e9ef203a7740eca1f711c75880a1ef.png


2.请求体携带参数查询(推荐)

match 匹配类型查询,会把查询条件进行分词,然后进行查询,多个词条之间是 or 的关系


GET/POST 请求 :http://127.0.0.1:9200/shopping/_search

请求体内容为:

{
    "query": {
        "match":{
            "name":"zhangsan"
        }
    }
}

f09d5ac6e2d64d02ab3a4d4cf3f15413.png

字段匹配查询

multi_match 与 match 类似,不同的是它可以在多个字段中查询。


GET 请求 :http://127.0.0.1:9200/student/_search

{
  "query": {
    "multi_match": {
      "query": "zhangsan",
      "fields": ["name","nickname"]
    }
  }
}

a7e3e94958a844e38e68864baafc200b.png

关键字精确查询

term 查询,精确的关键词匹配查询,不对查询条件进行分词。


GET 请求 :http://127.0.0.1:9200/student/_search

{
  "query": {
    "term": {
      "name": {
        "value": "zhangsan"
      }
    }
  }
}


d7243818e1b24869b3fd6ae9c9a889b3.png

多关键字精确查询

terms 查询和 term 查询一样,但它允许你指定多值进行匹配。

如果这个字段包含了指定值中的任何一个值,那么这个文档满足条件,类似于 mysql 的 in。


GET 请求 :http://127.0.0.1:9200/student/_search


{
  "query": {
    "terms": {
      "name": ["zhangsan","lisi"]
    }
  }
}

423744de639542f2967b2746048bdb49.png

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
1月前
|
监控 搜索推荐 Go
万字详解!在 Go 语言中操作 ElasticSearch
本文档通过示例代码详细介绍了如何在Go应用中使用`olivere/elastic`库,涵盖了从连接到Elasticsearch、管理索引到执行复杂查询的整个流程。
31 0
|
2月前
|
JSON DataWorks 关系型数据库
DataWorks操作报错合集之同步Elasticsearch数据报错:Cat response did not contain a JSON Array,是什么导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
3月前
|
Kubernetes 关系型数据库 MySQL
实时计算 Flink版产品使用合集之在Kubernetes(k8s)中同步MySQL变更到Elasticsearch该怎么操作
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
3月前
|
安全 Java API
SpringBoot 实现 elasticsearch 索引操作(RestHighLevelClient 的应用)
SpringBoot 实现 elasticsearch 索引操作(RestHighLevelClient 的应用)
49 1
|
3月前
|
自然语言处理 Java 索引
SpringBoot 实现 elasticsearch 查询操作(RestHighLevelClient 的案例实战)
SpringBoot 实现 elasticsearch 查询操作(RestHighLevelClient 的案例实战)
109 1
|
3月前
|
Java API
Java操作elasticsearch
Java操作elasticsearch
34 0
|
3月前
|
存储 JSON Go
ElasticSearch的HTTP操作 和Go客户端
【2月更文挑战第13天】ElasticSearch的HTTP操作 和Go客户端操作
96 0
|
4天前
|
Ubuntu Oracle Java
如何在 Ubuntu VPS 上安装 Elasticsearch
如何在 Ubuntu VPS 上安装 Elasticsearch
7 0
|
4天前
|
存储 Ubuntu Oracle
在Ubuntu 14.04上安装和配置Elasticsearch的方法
在Ubuntu 14.04上安装和配置Elasticsearch的方法
10 0
|
4天前
|
存储 安全 Java
在CentOS 7上安装和配置Elasticsearch的方法
在CentOS 7上安装和配置Elasticsearch的方法
17 0