《ElasticSearch6.x实战教程》之简单的API

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 《ElasticSearch6.x实战教程》之简单的API第三章-简单的API万丈高楼平地起ES提供了多种操作数据的方式,其中较为常见的方式就是RESTful风格的API。简单的体验利用Postman发起HTTP请求(当然也可以在命令行中使用curl命令)。

《ElasticSearch6.x实战教程》之简单的API
第三章-简单的API
万丈高楼平地起

ES提供了多种操作数据的方式,其中较为常见的方式就是RESTful风格的API。

简单的体验

利用Postman发起HTTP请求(当然也可以在命令行中使用curl命令)。

索引Index
创建索引
创建一个名叫demo的索引:

PUT http://localhost:9200/demo

ES响应:

{

"acknowledged": true,
"shards_acknowledged": true,
"index": "demo"

}
在创建索引时,可指定主分片和分片副本的数量:

PUT http://localhost:9200/demo

{

"settings":{
    "number_of_shards":1,
    "number_of_replicas":1
}

}
ES响应:

{

"acknowledged": true,
"shards_acknowledged": true,
"index": "demo"

}
查看指定索引
GET http://localhost:9200/demo

ES响应:

{

"demo": {
    "aliases": {},
    "mappings": {},
    "settings": {
        "index": {
            "creation_date": "1561110747038",
            "number_of_shards": "1",
            "number_of_replicas": "1",
            "uuid": "kjPqDUt6TMyywg1P7qgccw",
            "version": {
                "created": "5060499"
            }, 
            "provided_name": "demo"
        }
    }
}

}
查询ES中的索引
查询ES中索引情况:

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

ES响应:

health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open demo wqkto5CCTpWNdP3HGpLfxA 5 1 0 0 810b 810b
yellow open .kibana pwKW9hJyRkO7_pE0MNE05g 1 1 1 0 3.2kb 3.2kb
可以看到当前ES中一共有2个索引,一个是我们刚创建的demo,另一个是kibana创建的索引.kibana。表格中有一些信息代表了索引的一些状态。

health:健康状态,red表示不是所有的主分片都可用,即部分主分片可用。yellow表示主分片可用备分片不可用,常常是单机ES的健康状态,greens表示所有的主分片和备分片都可用。(官方对集群健康状态的说明,https://www.elastic.co/guide/en/elasticsearch/guide/master/cluster-health.html

status:索引状态,open表示打开可对索引中的文档数据进行读写,close表示关闭此时索引占用的内存会被释放,但是此时索引不可进行读写操作。

index:索引

uuid:索引标识

pri:索引的主分片数量

rep:索引的分片副本数量,1表示有一个分片副本(有多少主分片就有多少备分片,此处表示5个备分片)。

docs.count:文档数量

docs.deleted:被删除的文档数量

store.size:索引大小

pri.store.size:主分片占用的大小

删除索引
删除demo索引,删除索引等同于删库跑路,请谨慎操作。

DELETE http://localhost:9200/demo

ES响应:

{

"acknowledged": true

}
类型Type(同时定义映射Mapping字段及类型)
创建类型
在前面基本术语中我们提到类型Type类似关系型数据库中的表,映射Mapping定义表结构。创建类型Type时需要配合映射Mapping。

创建索引demo的类型为example_type,包含两个字段:created类型为date,message类型为keyword:

方式一:

PUT http://localhost:9200/demo/_mapping/example_type

{

"properties":{
    "created":{
        "type":"date"
    },
    "message":{
        "type":"keyword"
    }
}

}
此时再次执行查询索引的操作,已经可以发现类型Type被创建了,遗憾的是,如果类型Type(或者映射Mapping)一旦定义,就不能删除,只能修改,为了保证本教程顺利进行方式二创建类型,所以此处执行DELETE http://localhost:9200/demo删除索引。删除索引后不要再创建索引,下面的这种方式是在创建索引的同时创建Type并定义Mapping

方式二:

PUT http://localhost:9200/demo
{

"mappings":{
    "example_type":{
        "properties":{
            "created":{
                "type":"date"
            },
            "message":{
                "type":"keyword"
            }
        }
    }
}

}
此时执行GET http://localhost:9200/demo,可以看到我们在ES中创建了第一个索引以及创建的表结构,接下来插入就是数据(即文档)。

文档Document
插入文档
系统定义_id

POST http://localhost:9200/demo/example_type
{

"created":1561135459000,
"message":"test1"

}
ES响应:

{

"_index": "demo",
"_type": "example_type",
"_id": "AWt67Ql_Tf0FgxupYlBX",
"_version": 1,
"result": "created",
"_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
},
"created": true

}
查询文档
ElasticSearch的核心功能——搜索。

POST http://localhost:9200/demo/example_type/_search?pretty

ES响应:

{

"took": 183,
"timed_out": false,
"_shards": {
    "total": 5,
    "successful": 5,
    "skipped": 0,
    "failed": 0
},
"hits": {
    "total": 1,
    "max_score": 1,
    "hits": [
        {
            "_index": "demo",
            "_type": "example_type",
            "_id": "AWt67Ql_Tf0FgxupYlBX",
            "_score": 1,
            "_source": {
                "created": 1561135459000,
                "message": "test1"
            }
        }
    ]
}

}
关于文档的查询是ElasticSearch的核心,后面的章节会详细介绍一些基本的简单查询和更为高级的复杂查询,此处仅作为对插入数据的验证,不做过多展开。

修改文档
根据文档_id修改

POST http://localhost:9200/demo/example_type/AWt67Ql_Tf0FgxupYlBX/_update
{

"doc":{
    "message":"updated"
}

}
ES响应:

{

"_index": "demo",
"_type": "example_type",
"_id": "AWt67Ql_Tf0FgxupYlBX",
"_version": 2,
"result": "updated",
"_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
}

}
删除文档
删除_id为AWt67Ql_Tf0FgxupYlBX的文档

DELETE http://localhost:9200/demo/example_type/AWt67Ql_Tf0FgxupYlBX

ES的响应:

{

"found": true,
"_index": "demo",
"_type": "example_type",
"_id": "AWt67Ql_Tf0FgxupYlBX",
"_version": 2,
"result": "deleted",
"_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
}

}
原文地址https://www.cnblogs.com/yulinfeng/p/11210870.html

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
17天前
|
监控 前端开发 JavaScript
实战篇:商品API接口在跨平台销售中的有效运用与案例解析
随着电子商务的蓬勃发展,企业为了扩大市场覆盖面,经常需要在多个在线平台上展示和销售产品。然而,手工管理多个平台的库存、价格、商品描述等信息既耗时又容易出错。商品API接口在这一背景下显得尤为重要,它能够帮助企业在不同的销售平台之间实现商品信息的高效同步和管理。本文将通过具体的淘宝API接口使用案例,展示如何在跨平台销售中有效利用商品API接口,以及如何通过代码实现数据的统一管理。
|
29天前
|
数据采集 JSON API
如何实现高效率超简洁的实时数据采集?——Python实战电商数据采集API接口
你是否曾为获取重要数据而感到困扰?是否因为数据封锁而无法获取所需信息?是否因为数据格式混乱而头疼?现在,所有这些问题都可以迎刃而解。让我为大家介绍一款强大的数据采集API接口。
|
1月前
|
数据采集 监控 安全
各种业务场景调用API代理的API接口教程
API代理的API接口在各种业务场景中具有广泛的应用,本文将介绍哪些业务场景可以使用API代理的API接口,并提供详细的调用教程和代码演示,同时,我们还将讨论在不同场景下使用API代理的API接口所带来的好处。
|
2月前
|
存储 API 索引
Elasticsearch Reroute API 的使用
Elasticsearch Reroute API 的使用
39 1
|
3月前
|
JavaScript API
【vue实战项目】通用管理系统:api封装、404页
【vue实战项目】通用管理系统:api封装、404页
37 3
|
3月前
|
存储 JSON 自然语言处理
Elasticsearch 利用API进行搜索
Elasticsearch 利用API进行搜索
35 0
|
4月前
|
机器学习/深度学习 JSON JavaScript
图文讲解 Stable Diffusion API 调用教程
Stable Diffusion 是一个先进的深度学习模型,用于创造和修改图像。这个模型能够基于文本描述来生成图像,让机器理解和实现用户的创意。使用这项技术的关键在于掌握其 API,通过编程来操控图像生成的过程。
|
9天前
|
JavaScript API UED
Vue3.0新特性解析与实战:Composition API、Teleport与Suspense
【4月更文挑战第6天】Vue3.0引入了颠覆性的Composition API,通过函数式方法提升代码可读性和复用性,例如`setup()`、`ref`等,便于逻辑模块化。实战中,自定义的`useUser`函数可在多个组件中共享用户信息逻辑。另外,Teleport允许组件渲染到DOM特定位置,解决模态框等场景的上下文问题。再者,Suspense提供异步组件加载的延迟渲染,使用fallback内容改善用户体验。这些新特性显著优化了开发和性能,适应现代Web需求。
17 0
|
21天前
|
机器学习/深度学习 前端开发 API
实现以图搜货功能,淘宝API开发实战分享
实现以图搜货功能,淘宝API开发实战分享
24 0
|
28天前
|
安全 API 数据安全/隐私保护
email api接口配置教程步骤详解
Email API是用于程序化访问邮件服务的工具,让开发者能集成邮件功能到应用中。配置Email API包括选择供应商(如SendGrid、Mailgun、AokSend),注册获取API密钥,配置API参数,及测试邮件发送。使用Email API能提升邮件发送的可靠性和效率,便于邮件管理及营销活动。AokSend支持大量验证码发送,适合高效邮件运营。