赞
踩
GET bank/_doc/1
GET bank/_search
{
"query": {
"match_all": {}
}
}
GET bank/_search
{
"query": {
# 无条件查询
"match_all": {}
},
# 偏移量,从第一条开始查
"from": 0,
# 记录条数
"size": 1000
}
两种设置方式
GET bank/_search { "query": { "match_all": {} }, "sort": [ { "字段名": "asc" }, { "字段名": { "order": "desc/asc" } } ] }
注意:_id 为字符串,其排序方式为按位比较,并非数值大小
在 bool 查询内,可以使用 filter 对数据进行过滤。
单从最终数据来看,filter 也是用于过滤数据,用于条件查询。
不同点在于,filter 查询的结果不进行评分,但也不影响bool查询内其他查询的评分结果。
# 查询 age = 10 & province = 600 的数据 # 使用 filter 过滤,filter 仅过滤数据,而不进行评分,当然也不影响 使用 query 内其他查询的评分结果 GET /stu/_search { "query": { "bool": { "must": [ { "nested": { "path": "address", "query": { "term": { "address.province": { "value": "600" } } } } } ], "filter": [ { "term": { "age": 10 } } ] } } }
ES没有数组一说,对数组值的查询就像普通值那样查询即可。
数组内其中一项匹配就算成功
terms:在多个条件值里面匹配,匹配上一个就算成功。
term:只能传一个条件值,不分词的字段值 或者 数组内某项字段值 或者 字段分词后的词典 匹配上这个值就算成功。
直接匹配数组字段,只要匹配上数组内任一项(或者关系)就算成功;
如果要同时匹配数组内多个值,可以使用bool must 对多个值进行(与关系匹配)
# 查询 hobbies 包含 swimming 或者 music 的数据
GET /stu/_search
{
"query": {
"terms": {
"hobbies": [
"movie",
"music"
]
}
}
}
可以查到以下数据
{ "_index" : "stu", "_type" : "_doc", "_id" : "jjoE7YgBKFUjhQBi3mz1", "_score" : 1.0, "_source" : { "id" : 2, "name" : "李四", "age" : 20, "hobbies" : [ "music", "speaking", "drive" ], "address" : [ { "province" : "500", "city" : "025", "county" : "1993" }, { "province" : "502", "city" : "027", "county" : "1999" } ] } }, { "_index" : "stu", "_type" : "_doc", "_id" : "jzoE7YgBKFUjhQBi_2zu", "_score" : 1.0, "_source" : { "id" : 3, "name" : "张三四", "age" : 30, "hobbies" : [ "movie", "book", "swimming" ], "address" : [ { "province" : "600", "city" : "021", "county" : "1887" }, { "province" : "601", "city" : "073", "county" : "1953" } ] } }
有时,我们查询的条件字段不在最外层;此时需要使用嵌套查询
GET xxx_index/_search { "query": { # 嵌套查询,其他字段该怎么查怎么查,如果还有不属于这个嵌套字段的其他条件,依然使用 bool ,处理 "nested": { "path": "外层字段名", # 基于这个path,当前的层级,再写一个 普通的query "query": { "bool": { # 多条件 "must": [ { "term": { "外层字段名.内层字段名1": 条件值1 } }, { "match_phrase": { "外层字段名.内层字段名2": 条件值2 } } ] } } } } }
# 一个嵌套字段 & 一个普通字段 GET xxx_index/_search { "query": { "bool": { "must": [ { "nested": { "path": "外层字段名1", "query": { "term": { "外层字段名1.内层字段名1": 条件值1 } } } }, { "match": { "外层字段名2": " 条件值2" } } ] } } }
如果还有,其他外层字段,依旧在 外层 bool 里面加条件。
{
"_source": [
"字段名",
"字段名.属性名",
"字段名.*"
],
"query": {
xxxx
}
}
或
{
"_source": {
"includes": [
"字段名",
"字段名.属性名",
"字段名.*"
]
},
"query": {
xxx
}
}
{
"_source": false,
"query": {
xxxx
}
}
{
"_source": {
"exclude": [
"字段名",
"字段名.属性名",
"字段名.*"
]
},
"query": {
xxxx
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。