ElasticSearch全文检索__ ElasticSearch 基本操作
REST 简介-定义
REST (REpresentation State Transfer)描述了一个架构样式的网络系统,比如 web 应用程序。它首次出现在 2000 年 Roy Fielding 的博士论文中,他是 HTTP 规范的主要编写者之一。REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。
Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。
在服务器端,应用程序状态和功能可以分为各种资源。资源是一个有趣的概念实体,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每个资源都使用 URI (Universal Resource Identifier) 得到一个惟一的地址。所有资源都共享统一的界面,以便在客户端和服务器之间传输状态。使用的是标准的 HTTP 方法,比如 GET、PUT、POST 和 DELETE。
REST 简介-资源
REST 简介-基本操作
1)GET 获取对象的当前状态
2)PUT 改变对象的状态
3)POST 创建对象
4)DELETE 删除对象
5)HEAD 获取头信息
REST 简介-资源
ES 内置的REST接口
ElasticSearch-CURL命令
简单认为是可以在命令行下访问url的一个工具
curl是利用URL语法在命令行方式下工作的开源文件传输工具,使用curl可以简单实现常见的get/post请求。
Curl的使用
1)-X 指定http请求的方法GET POST PUT DELETE
2)-d 指定要传递的参数
ElasticSearch-CURL命令-建立索引库
curl -XPUT 'http://master:9200/dwq/'
PUT/POST都可以
示例:
curl -XPOST http://master:9200/dwq/user/1 -d '{"name" : "john","age" : 28}'
ElasticSearch-CURL命令-PUT与POST对比
PUT是幂等方法,而POST并不是。所以PUT用于更新操作、POST用于新增操作比较合适。
PUT,DELETE操作是幂等的。所谓幂等是指不管进行多少次操作,结果都一样。比如我用PUT修改一篇文章,然后在做同样的操作,每次操作后的结果并没有不同,DELETE也是一样。
POST操作不是幂等的,比如常见的POST重复加载问题:当我们多次发出同样的POST请求后,其结果是创建出了若干的资源。
还有一点需要注意的就是,创建操作可以使用POST,也可以使用PUT,区别在于POST是作用在一个集合资源之上的(/articles),而PUT操作是作用在一个具体资源之上的(/articles/123),比如说很多资源使用数据库自增主键作为标识信息,而创建的资源的标识信息到底是什么只能由服务端提供,这个时候就必须使用POST。
ElasticSearch-CURL命令-创建索引注意事项
索引库名称必须要全部小写,不能以下划线开头,也不能包含逗号
如果没有明确指定索引数据的ID,那么es会自动生成一个随机的ID,需要使用POST参数
curl -XPOST http://master:9200/dwq/user/ -d '{"name" : "john"}'
创建全新内容的两种方式:
1)使用自增ID(post)
2)在url后面添加参数(get)
curl -XPUT http://master:9200/dwq/user/2?op_type=create -d '{"name":"john","age":28}'
curl -XPUT http://master:9200/dwq/user/2/_create -d '{"name":"john","age":28}'
ElasticSearch-CURL命令-查询索引GET
1.根据员工id查询
curl -XGET http://master:9200/dwq/user/1?pretty
在任意的查询字符串中添加pretty参数,es可以得到易于识别的json结果。
2.检索文档中的一部分,如果只需要显示指定字段
curl -XGET 'http://master:9200/dwq/user/1?_source=name,age&pretty'
3.查询指定索引库指定类型所有数据
curl -XGET http://master:9200/dwq/user/_search
4.根据条件进行查询
curl -XGET http://master:9200/dwq/user/_search?q=name:john
ElasticSearch-CURL命令-DSL查询
Domain Specific Language领域特定语言
新添加一个文档
curl -XPUT http://master:9200/dwq/user/3/_create -d '{"name":"lily","age":18}‘
curl -XGET http://master:9200/dwq/user/_search -d'{"query":{"match":{"name":"lily"}}}'
ElasticSearch-CURL命令-MGET查询
1.使用mget API获取多个文档
先新建一个库
curl -XPUT 'http://master:9200/dwq2/'
curl -XPOST http://master:9200/dwq2/user/1 -d '{"name" : "lucy","age" : 18}'
curl -XGET http://master:9200/_mget?pretty -d
'{"docs":[{"_index":"dwq","_type":"user","_id":2,"_source":"name"},{"_index":"dwq2","_type":"user","_id":1}]}'
2.如果需要的文档在同一个_index或者同一个_type中,你就可以在URL中指定一个默认的/_index或者/_index/_type
curl -XGET http://master:9200/dwq/user/_mget?pretty -d '{"docs":[{"_id":1},{"_id":2}]}'
3.如果所有的文档拥有相同的_index 以及 _type,直接在请求中添加ids的数组即可
curl -XGET http://master:9200/dwq/user/_mget?pretty -d '{"ids":["1","2"]}'
- 点赞
- 收藏
- 关注作者
评论(0)