搜索引擎Elasticsearch REST API学习
Elasticsearch为开发者提供了一套基于Http协议的Restful接口,只需要构造rest请求并解析请求返回的json即可实现访问Elasticsearch服务器。Elasticsearch的API接口功能丰富,包含集群、监控、部署管理等,也包含常用的文档、索引操作,本文主要是使用Postman工具对文档操作相关的api做学习记录。
新增文档
PUT方式:http://localhost:9200/store/product/1 //指定id,存在则更新,不存在则新增
POST方式:http://localhost:9200/store/product //自动生成id
其中store表示Index,product表示Type,数字1表示的是Document(文档)的主键,主键可以是任意的形式,也可以不指定主键,Elasticsearch将会自动生成一个唯一主键,但是必须是post方式提交请求。
测试:

返回结果中_id:自动生成的主键,_shards:表示分区信息,total:2表示有两个分区,successful:1 表示成功赋值了一份。_version:1表示该文档的版本号,每修改一次,版本号都会自增。
Elasticseach-head中查看数据:

根据主键查询
GET方式:http://localhost:9200/store/product/nMWgs2UBQISnN0EoTXZL Elasticserach提供的是restful api,很容易理解这个接口形式。
返回结果中_source表示返回的Doucment(文档)类容,其他几个是Elasticsearch文档结构字段。如果只需要_source内容不需要其他结构字段,还可以在请求url上加上属性”/_source”,将只返回source部分容,请求:http://localhost:9200/store/product/1/_source

根据主键更新文档
在 Elasticsearch 中文档是 不可改变 的,不能修改它们。如果想要更新现有的文档,需要 重建索引或者进行替换,更新接口同新增文档接口,使用/index/type/key的形式。Elasticsearch的实现方式是将旧的文档标记为删除,并增加一个全新的文档。标记为删除的文档将不再可以直接操作,但它并不会立即消失,Elasticsearch会在后台清理这些已标记为删除的文档。

如果明确知道修改文档的哪部分数据,还可以通过在上述请求URL后面添加“/_update”并使用POST的方式,来更新数据,虽然这个看上去像是直接更新的,实际上也是重新创建了一个新的文档,处理过程为是先从就的文档中构建Json数据,并根据请求修改的字段修改json数据,然后将就文档标记为删除,添加一个新文档。请求如下:

如果并发修改文档,可以使用version字段实乐观锁,修改的目标文档的版本号version和传入的不一致,则会修改失败,请求url:http://localhost:9200/store/product/1/_update?version=4
根据主键删除
使用DELETE方式,请求格式 host/index/type/key

搜索文档
Elasticsearch提供了强大的搜索功能,搜索参数可以放在请求url上,也可以放在body中,请求基本格式: host/index/type/_search
- GET方式+ url参数的方式进行全文搜索
返回结果中_score是搜索引擎的概念,表示相关度,分数越高表示此文档与搜索条件关键字的匹配程度越高。

2. 使用match表达式进行全文搜索

3. elasticsearch也支持分页查询,使用from和size两个参数指定页码和页大小即可。

更详细的说明参考官方文档:
中文文档:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
英文文档:https://www.elastic.co/guide/en/elasticsearch/reference/6.4/index.html
搜索引擎Elasticsearch REST API学习的更多相关文章
- 利用kibana学习 elasticsearch restful api (DSL)
利用kibana学习 elasticsearch restful api (DSL) 1.了解elasticsearch基本概念Index: databaseType: tableDocument: ...
- 搜索引擎 ElasticSearch 之 步步为营1 【环境搭建&初识ElasticSearch】
1.下载ElasticSearch a.下载Java环境JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloa ...
- 全文搜索引擎 Elasticsearch 安装
全文搜索引擎 Elasticsearch 安装 学习了:http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html 拼音:https://www ...
- 搜索引擎 ElasticSearch 之 步步为营2 【基础概念】
在正式学习 ElasticSearch 之前,首先看一下 ElasticSearch 中的基本概念. 这些概念将在以后的章节中出现多次,所以花15分钟理解一下是非常值得的. 英文好的同学,请直接移步官 ...
- [搜索]ElasticSearch Java Api(一) -添加数据创建索引
转载:http://blog.csdn.net/napoay/article/details/51707023 ElasticSearch JAVA API官网文档:https://www.elast ...
- 搜索引擎elasticsearch + kibana + X-pack + IK安装部署
目录 准备安装环境 配置启动 启动elasticsearch 启动kibana 启用X-pack 安装使用IK 使用示例 官方Clients 准备安装环境 这次我们安装以下软件或插件: elastic ...
- Elasticsearch Java API 很全的整理
Elasticsearch 的API 分为 REST Client API(http请求形式)以及 transportClient API两种.相比来说transportClient API效率更高, ...
- Openstack api 学习文档 & restclient使用文档
Openstack api 学习文档 & restclient使用文档 转载请注明http://www.cnblogs.com/juandx/p/4943409.html 这篇文档总结一下我初 ...
- ASP.NET MVC Web API 学习笔记---第一个Web API程序
http://www.cnblogs.com/qingyuan/archive/2012/10/12/2720824.html GetListAll /api/Contact GetListBySex ...
随机推荐
- C语言不定型参数函数定义
我们在C语言中定义一个函数,通常都是需要在函数原型中规定这个函数需要提供什么类型的参数以及需要提供多少个.也就是,你的参数必须明确.但是我们调用函数库中的printf和scanf函数会发现,它们似乎是 ...
- EJS 模板中,js 如何获取后端传来的数据
在 ejs 模板中,想让 js 的代码获得后端传来的数据,要在<%=%>的外面加一对引号. 如下图,从后端给 chatroom.ejs 传进去一个 avatar 变量,是个字符串类型的. ...
- 20155216 2016-2017-2 《Java程序设计》第七周学习总结
20155216 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 认识Lambda表达式语法 Lambda表达式不需要也不允许使用throws关键字来声明可能 ...
- 20155320 《Java程序设计》实验三 敏捷开发与XP实践
20155320 <Java程序设计>实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 (一)研究一下Code菜单 具体内容: 在IDEA中使用工具(Code-> ...
- 20155325 2016-2017-2 《Java程序设计》第九周学习总结
教材学习内容总结 SRP高内聚 开发工作原则:对扩充开发,对修改封闭.(对模块的行为可以扩充:模块的源代码不可更改) OO设计 依赖倒置原则:高层模块不依赖于 Linux视频笔记 安装时的说明(非ub ...
- 20155331 《信息安全技术概论》实验二 Windows口令破解
20155331 <信息安全技术概论>实验二 Windows口令破解 [实验目的] 了解Windows口令破解原理 对信息安全有直观感性认识 能够运用工具实现口令破解 [实验原理] 口令破 ...
- PHP 行为测试工具 Codeception (介绍)
原文地址:https://phphub.org/topics/25 Codeception 简介 Codeception 简单来说, 分为以下几种测试 Acceptance Tests 验收测试 Fu ...
- c# IE浏览器清除缓存没用
再想买更新JS和css文件之后, 使用 internet 里面的删除选项 发现样式和事件还是没用变 最终发现 需要 按 f12 找到这个清缓存才正常解决问题
- NLP的12条精髓
NLP是神经语言程序学 (Neuro-Linguistic Programming) 的英文缩写.一.没有两个人是一样的 No two persons are the same. 1.没有两个人的人生 ...
- python基础数据类型补充
python_day_7 一. 今日主要内容: 1. 补充基础数据类型的相关知识点 str. join() 把列表变成字符串 列表不能再循环的时候删除. 因为索引会跟着改变 字典也不能直接循环删除.把 ...