搜索
相应结果说明:
1、hits:
响应中最重要的部分是hits,它包含了total字段来表示匹配到的文档总数,hits数组还包含了匹配到的前10条数据。
hits数组中的每个结果都包含_index、_type和文档的_id字段,被加入到_source字段中这意味着在搜索结果中我们将可以直接使用全部文档。这不像其他搜索引擎只返回文档ID,需要你单独去获取文档。
每个节点都有一个_score字段,这是相关性得分(relevance score),它衡量了文档与查询的匹配程度。默认的,返回的结果中关联性最大的文档排在首位;这意味着,它是按照_score降序排列的。这种情况下,我们没有指定任何查询,所以所有文档的相关性是一样的,因此所有结果的_score都是取得一个中间值1
max_score指的是所有文档匹配查询中_score的最大值。
2、took:
请求花费的时间
3、shards:
分片数
4、timeout:
告诉我们查询是否超时
5、分页查询:
size:
结果数,默认10
from:
跳过开始的结果数
如果想要显示5个结果:
GET /_search?size=5
GET /_search?size=5&from=5
GET /_search?size=5&from=10
6、term 过滤:
主要用来精确匹配字段。
请求体:
{ "term": { "age": 26 }}
{ "term": { "date": "2014-09-01" }}
{ "term": { "public": true }}
{ "term": { "tag": "full_text" }}
7、terms 过滤:
相当于sql中一个字段中包含哪些值。
{
"terms": {
"tag": [ "search", "full_text", "nosql" ]
}
}
8、range 筛选:
查询范围之内的值。
范围值:
gt :: 大于
gte:: 大于等于
lt :: 小于
lte:: 小于等于
{
"range": {
"age": {
"gte": 20,
"lt": 30
}
}
}
9、exists 和 missing 过滤:
查询某个字段中是否存在某个字段。相当于 sql 中的 IS_NULL。
{
"exists": {
"field": "title"
}
}
10、bool 过滤:
bool 过滤可以用来合并多个过滤条件查询结果的布尔逻辑,它包含一下操作符:
must :: 多个查询条件的完全匹配,相当于 and。
must_not :: 多个查询条件的相反匹配,相当于 not。
should :: 至少有一个查询条件匹配, 相当于 or。
命令:
{
"bool": {
"must": { "term": { "folder": "inbox" }},
"must_not": { "term": { "tag": "spam" }},
"should": [
{ "term": { "starred": true }},
{ "term": { "unread": true }}
]
}
}
11、match_all 查询:
查询到所有的文档。
12、multi_match 查询:
使用一个值,作用在多个值上。
命令:
{
"multi_match": {
"query": "full text search",
"fields": [ "title", "body" ]
}
}
13、bool 查询:
?
14、 过滤查询:
?
15、校验查询语句是否合法:
validate
命令:
GET /gb/tweet/_validate/query
{
"query": {
"tweet" : {
"match" : "really powerful"
}
}
}
相应查询结构体是合法的:
{
"valid" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"failed" : 0
}
}
想要知道哪里错误 加上 explain:
GET /gb/tweet/_validate/query?explain
{
"query": {
"tweet" : {
"match" : "really powerful"
}
}
}
网友评论