ElasticSearch全文检索__ ElasticSearch 基本操作

网友投稿 521 2022-05-29

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的一个工具

ElasticSearch全文检索__ ElasticSearch 基本操作

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

全文检索 Elasticsearch

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:同源策略及跨域请求解决方案(Django框架为例)
下一篇:Runc容器运行过程及容器逃逸原理
相关文章