restful风格
restful风格是一种架构风格,而不是标准。restful提供了一组设计原则以及约束条件,主要用于客户端和服务器端进行交互。
- 基于restful风格命令说明
method | url地址 | 描述 | |
---|---|---|---|
PUT | 主机地址:9200/index_name/_create/doc_id | 创建文档(指定id) | |
POST | 主机地址:9200/index_name/d_doc | 创建文档 | |
POST | 主机地址:9200/index_name/_update/doc_id | 修改文档 | |
DELETE | 主机地址:9200/index_name | 删除索引 | |
DELETE | 主机地址:9200/index_name/_doc/doc_id | 删除文档 |
索引的基本操作
当一个集群一旦运行起来,我们就可以对所要的数据进行索引。在这个过程中elasticsearch有很多选择,但殊路同归,最终会把json文档放入elasticsearch索引中去。
- 可以直接使用
PUT
请求用一个唯一的文档ID,以及多个字段同等的出现在请求体中,来为文档添加索引
PUT /test/_create/1
{
"name":"yq",
"age":18
}
这个请求会自动创建一个test
索引(当test
索引不存在时),然后添加一个文档id为1的文档,同时存储字段name
和age
.
当一个新的文档创建见后,在响应体中会展示一个"_version":1
的操作结果,表示这个文档被首次创建,显示结果如下:
- 创建完成后,在一个集群多个节点中,这个文档就可以立即使用,可以通过
GET
请求这个文档ID得到文档。
GET /test/_doc/1
响应指标显示了具有指定id的文档,并显示了该索引的原始字段。
- elasticsearch搜索
当我们使用elasticsearch索引存储一些数据之后,我们就可以通过客户端发送包含_search
的请求来获取查询结果。如果想要得到特定的搜索结果,可以通过在请求体中对特定字段进行包装实现获得想要的结果。 - 利用查询索引
test
中的结果,并以升序展示查询结果
GET /test/_search
{
"query": {"match_all": {}},
"sort": [
{"age": "asc"}
]
}
默认的,在hits
这个部分会展示符合搜索条件的全部文档
返回结果同样的也提供了关于搜索请求的一下信息:
took
:elasticsearch查询所花费的时间(以毫秒为单位)time_out
:判断搜索请求是否超时_shards
:搜索时总共有多少主分片,成功多少,失败多少,跳过多少max_score
:找到最相关的文件的得分hits.total.value
:有多少符合搜索条件的文档被查找到的数量hits.sort
:文档排序的位置(有相关性评分时,不进行排序)hits._score
:文档的相关性得分(使用match_all
查询时不应用)
在elasticsearch中每一个搜索请求都是自包含的,elasticsearch不会维护任何跨域请求的信息。如果在搜索结果使用分页显示,则需要在请求中明确分页设置from
和size
参数。- 分页查询
GET /test/_search
{
"query": {"match_all": {}},
"sort": [
{"age": "asc"}
],
"from":0,
"size":1
}
可以使用match
来对一个字段进行特定的术语查询
GET /test/_search
{
"query": {"match": {"name":"yq"}}
}
查询结果:
可以使用match_phrase
来查询语句,而不仅仅是一个单词
GET /test/_search
{
"query": {"match_phrase": {"name":"yq"}}
}
查询结果:
可以使用bool
查询来创建更多的查询条件,可以确定那些条件是必须的
GET /test/_search
{
"query": {
"bool": {
"must": [
{"match": {"name":"yq"}
}
],
"must_not": [
{"match": {"age":18}}
]
}
}
}
must not
可以看做一个条件查询,同时我们可以利用filter
来进行筛选
GET /test/_search
{
"query": {
"bool": {
"must": [
{"match": {"name":"yq"}
}
],
"filter":{"range": {
"age": {
"gte": 10,
"lte": 20
}
}}
}
}
}
查询结果: