ElasticSearch全文检索__ ElasticSearch 基本操作

举报
Smy1121 发表于 2019/06/22 17:39:12 2019/06/22
【摘要】 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 简介-资源

image.png


REST 简介-基本操作

1)GET 获取对象的当前状态

2)PUT 改变对象的状态

3)POST 创建对象

4)DELETE 删除对象

5)HEAD 获取头信息


REST 简介-资源

ES 内置的REST接口

image.png


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"]}'

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。