Elasticsearch Api查询语法指南
ElasticSearch API查询可以提供两种表单:一种是“简易版”的查询字符串(query string)将所有参数通过查询字符串定义(查询字符串搜索对于在命令行下(curl -i -X +查询字符串)运行点对点查询特别有用),另一种版本使用JSON完整的表示请求体(request body),这种富搜索语言叫做结构化查询语句(DSL)
空搜索
空搜索:没有有指定任何的查询条件,只返回集群索引中的所有文档:
get /_search
返回结果的的示例如下
对上述查询结果中的一些单词解释:
默认返回查询结果集中的10个结果。hits 包含total表示查询结果的总数量,hits数字中的各个对象表示查询的每一个结果,每个对象中都包含索引名,类型名,id以及本条数据在对于本次查询的结果相关性(_score),_source对象的值为索引原数据。took表示本次查询花费的毫秒数,_shards对象中包含参与本次查询的分片的一些信息,其中failed表示没有成功参与查询的分片数,successful表示成功参与查询的分片数,total表示参与查询的总分片数。timed_out表示本次查询是否超时
多索引和多类别
在索引 gb 的所有类型中搜索
get /gb/_search
在索引 gb 和 us 的所有类型中搜索
get /gb, us/_search
在以 g 或 u 开头的索引的所有类型中搜索
get /g*, u*/_search
在索引 gb 的类型 user 中搜索
get /gb/user/_search
在索引 gb 和 us 的类型为 user 和 tweet 中搜索
get /gb, us/user, tweet/_search
在所有索引的 user 和 tweet 中搜索 search types
get /_all/user, tweet/_search
分页查询(from:从哪里开始,size:显示结果)
GET /_search?size=5
GET /_search?size=5&from=5
简单搜索
查询字符串
查询所有类 型为 tweet 并在 tweet 字段中包含 elasticsearch 字符的文档
get /_all/tweet/_search?q=tweet:elasticsearch
查找 name 字段中包含 “john” 和 tweet 字段包含 “mary” 的结果
get /_all/tweet/_search?q=name:john +tweet:mary
返回包含 “mary” 字符的所有文档的简单搜索
get /_search?q=mary
name字段包含 “mary” 或"john",date晚于2014-09-10,_all字段包含"aggregations" 或"geo"
get /_all/tweet/_search?q=name:(mary john)+date:>2014-09-10+(aggregations geo)
请求体查询
空查询将会返回索引中所有的文档
GET /_search
{
}
使用 from 及 size 参数进行分页
GET /_search
{
"from":30,
"size": 10
}
使用match查询子句用来找寻在tweet字段中找寻包含elasticsearch的成员
get /search
{
"query":{
"match":{
"tweet":"elasticserch"
}
}
}
未完待续…