1.match_all搜索,直接返回所有文檔
GET /school/_search
{
"query": {
"match_all": {}
}
}
返回結果大致如下:
{
"took": 13,
"timed_out": false,
"_shards": {
"total": 3,
"successful": 3,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 23,
"max_score": 1,
"hits": [
{
"_index": "school",
"_type": "student",
"_id": "b3ffcWIB-npqvsX5SmVm",
"_score": 1,
"_source": {
"aggs": {
"group_by_word_count": {
"terms": {
"field": "word_count"
}
}
}
}
},
{
"_index": "school",
"_type": "student",
"_id": "c3fjcWIB-npqvsX5G2Wh",
"_score": 1,
"_source": {
"aggs": {
"grades_word_count": {
"stats": {
"field": "word_count"
}
}
}
}
},
{
"_index": "school",
"_type": "student",
"_id": "dHfjcWIB-npqvsX5uWWr",
"_score": 1,
"_source": {
"aggs": {
"grades_word_count": {
"min": {
"field": "word_count"
}
}
}
}
},
{
"_index": "school",
"_type": "student",
"_id": "dXfkcWIB-npqvsX5hmWx",
"_score": 1,
"_source": {
"query": {
"match": {
"name": "海哥"
}
}
}
},
{
"_index": "school",
"_type": "student",
"_id": "dnflcWIB-npqvsX5S2V0",
"_score": 1,
"_source": {
"query": {
"multi_match": {
"query": "海哥",
"fields": [
"name",
"address"
]
}
}
}
},
{
"_index": "school",
"_type": "student",
"_id": "fXfqcWIB-npqvsX5yGXf",
"_score": 1,
"_source": {
"query": {
"bool": {
"filter": {
"term": {
"word_count": 2000
}
}
}
}
}
},
{
"_index": "school",
"_type": "student",
"_id": "fnfrcWIB-npqvsX5mGXq",
"_score": 1,
"_source": {
"query": {
"constant_score": {
"filter": {
"match": {
"title": "ElasticSearch"
}
},
"boost": 2
}
}
}
},
{
"_index": "school",
"_type": "student",
"_id": "gHfucWIB-npqvsX5HWUB",
"_score": 1,
"_source": {
"query": {
"bool": {
"must_not": [
{
"term": {
"word_count": "2000"
}
}
]
}
}
}
},
{
"_index": "school",
"_type": "student",
"_id": "HYVJOGIBUtf8tEPshwDC",
"_score": 1,
"_source": {
"name": "張小花",
"address": "山東煙台",
"age": 24,
"date": "1996-07-24"
}
},
{
"_index": "school",
"_type": "student",
"_id": "cHffcWIB-npqvsX59mXN",
"_score": 1,
"_source": {
"aggs": {
"group_by_word_count": {
"terms": {
"field": "word_count"
}
}
}
}
}
]
}
}
參數大致解釋:
took: 執行搜索耗時,毫秒為單位
time_out: 搜索是否超時
_shards: 多少分片被搜索,成功多少,失敗多少
hits: 搜索結果展示
hits.total: 匹配條件的文檔總數
hits.hits: 返回結果展示,默認返回十個
hits.max_score:最大匹配得分
hits._score: 返回文檔的匹配得分(得分越高,匹配程度越高,越靠前)
_index _type _id 作為剝層定位到特定的文檔
_source 文檔源
2.執行查詢
2.1 只顯示name和address
POST /school/_search
{
"query": {
"match_all": {}
},
"_source": [
"name",
"address"
]
}
查詢結果:
{
"took": 313,
"timed_out": false,
"_shards": {
"total": 3,
"successful": 3,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 23,
"max_score": 1,
"hits": [
{
"_index": "school",
"_type": "student",
"_id": "b3ffcWIB-npqvsX5SmVm",
"_score": 1,
"_source": {}
},
{
"_index": "school",
"_type": "student",
"_id": "c3fjcWIB-npqvsX5G2Wh",
"_score": 1,
"_source": {}
},
{
"_index": "school",
"_type": "student",
"_id": "dHfjcWIB-npqvsX5uWWr",
"_score": 1,
"_source": {}
},
{
"_index": "school",
"_type": "student",
"_id": "dXfkcWIB-npqvsX5hmWx",
"_score": 1,
"_source": {}
},
{
"_index": "school",
"_type": "student",
"_id": "dnflcWIB-npqvsX5S2V0",
"_score": 1,
"_source": {}
},
{
"_index": "school",
"_type": "student",
"_id": "fXfqcWIB-npqvsX5yGXf",
"_score": 1,
"_source": {}
},
{
"_index": "school",
"_type": "student",
"_id": "fnfrcWIB-npqvsX5mGXq",
"_score": 1,
"_source": {}
},
{
"_index": "school",
"_type": "student",
"_id": "gHfucWIB-npqvsX5HWUB",
"_score": 1,
"_source": {}
},
{
"_index": "school",
"_type": "student",
"_id": "HYVJOGIBUtf8tEPshwDC",
"_score": 1,
"_source": {
"address": "山東煙台",
"name": "張小花"
}
},
{
"_index": "school",
"_type": "student",
"_id": "cHffcWIB-npqvsX59mXN",
"_score": 1,
"_source": {}
}
]
}
}
2.2 返回name為haige的document
POST /school/_search
{
"query": {
"match": {
"name": "張小花"
}
}
}
查詢結果:
{
"took": 439,
"timed_out": false,
"_shards": {
"total": 3,
"successful": 3,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 2.634553,
"hits": [
{
"_index": "school",
"_type": "student",
"_id": "bXfXcWIB-npqvsX5w2Vc",
"_score": 2.634553,
"_source": {
"name": "張小花",
"address": "山東煙台",
"age": 24,
"date": "1996-07-24"
}
},
{
"_index": "school",
"_type": "student",
"_id": "HYVJOGIBUtf8tEPshwDC",
"_score": 0.8630463,
"_source": {
"name": "張小花",
"address": "山東煙台",
"age": 24,
"date": "1996-07-24"
}
}
]
}
}
2.3 返回name包含"海"的所有document
POST /school/_search
{
"query": {
"match": {
"name": "海"
}
}
}
查詢結果:
{
"took": 68,
"timed_out": false,
"_shards": {
"total": 3,
"successful": 3,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1.0417081,
"hits": [
{
"_index": "school",
"_type": "student",
"_id": "3",
"_score": 1.0417081,
"_source": {
"name": "海哥",
"address": "山東濟寧",
"age": 27,
"date": "1998-03-16"
}
}
]
}
}
2.4 返回name中包含term "海" 或 "花" 的所有document
POST /school/_search
{
"query": {
"match": {
"name": "海 花"
}
}
}
查詢結果:
{
"took": 26,
"timed_out": false,
"_shards": {
"total": 3,
"successful": 3,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 3,
"max_score": 1.0417081,
"hits": [
{
"_index": "school",
"_type": "student",
"_id": "3",
"_score": 1.0417081,
"_source": {
"name": "海哥",
"address": "山東濟寧",
"age": 27,
"date": "1998-03-16"
}
},
{
"_index": "school",
"_type": "student",
"_id": "bXfXcWIB-npqvsX5w2Vc",
"_score": 0.8781843,
"_source": {
"name": "張小花",
"address": "山東煙台",
"age": 24,
"date": "1996-07-24"
}
},
{
"_index": "school",
"_type": "student",
"_id": "HYVJOGIBUtf8tEPshwDC",
"_score": 0.2876821,
"_source": {
"name": "張小花",
"address": "山東煙台",
"age": 24,
"date": "1996-07-24"
}
}
]
}
}
2.5 匹配phrase "海 花"
POST /school/_search
{
"query": {
"match_phrase": {
"name": "海 花"
}
}
}
查詢結果:
{
"took": 5,
"timed_out": false,
"_shards": {
"total": 3,
"successful": 3,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}
2.6 返回name中包含"海"和"哥"的所有賬戶(AND)
POST /school/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "海"
}
},
{
"match": {
"name": "哥"
}
}
]
}
}
}
查詢結果:
{
"took": 208,
"timed_out": false,
"_shards": {
"total": 3,
"successful": 3,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 2.0834162,
"hits": [
{
"_index": "school",
"_type": "student",
"_id": "3",
"_score": 2.0834162,
"_source": {
"name": "海哥",
"address": "山東濟寧",
"age": 27,
"date": "1998-03-16"
}
}
]
}
}
2.7 返回name中包含"海"或"花"的所有document
POST /school/_search
{
"query": {
"bool": {
"should": [
{
"match": {
"name": "海"
}
},
{
"match": {
"name": "花"
}
}
]
}
}
}
查詢結果:
{
"took": 19,
"timed_out": false,
"_shards": {
"total": 3,
"successful": 3,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 3,
"max_score": 1.0417081,
"hits": [
{
"_index": "school",
"_type": "student",
"_id": "3",
"_score": 1.0417081,
"_source": {
"name": "海哥",
"address": "山東濟寧",
"age": 27,
"date": "1998-03-16"
}
},
{
"_index": "school",
"_type": "student",
"_id": "bXfXcWIB-npqvsX5w2Vc",
"_score": 0.8781843,
"_source": {
"name": "張小花",
"address": "山東煙台",
"age": 24,
"date": "1996-07-24"
}
},
{
"_index": "school",
"_type": "student",
"_id": "HYVJOGIBUtf8tEPshwDC",
"_score": 0.2876821,
"_source": {
"name": "張小花",
"address": "山東煙台",
"age": 24,
"date": "1996-07-24"
}
}
]
}
}
2.8 查詢name中既不包含"海",也不包含"哥"的所有document
POST /school/_search
{
"query": {
"bool": {
"must_not": [
{
"match": {
"name": "海"
}
},
{
"match": {
"name": "哥"
}
}
]
}
}
}
查詢結果:
{
"took": 264,
"timed_out": false,
"_shards": {
"total": 3,
"successful": 3,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 22,
"max_score": 1,
"hits": [
{
"_index": "school",
"_type": "student",
"_id": "b3ffcWIB-npqvsX5SmVm",
"_score": 1,
"_source": {
"aggs": {
"group_by_word_count": {
"terms": {
"field": "word_count"
}
}
}
}
},
{
"_index": "school",
"_type": "student",
"_id": "c3fjcWIB-npqvsX5G2Wh",
"_score": 1,
"_source": {
"aggs": {
"grades_word_count": {
"stats": {
"field": "word_count"
}
}
}
}
},
{
"_index": "school",
"_type": "student",
"_id": "dHfjcWIB-npqvsX5uWWr",
"_score": 1,
"_source": {
"aggs": {
"grades_word_count": {
"min": {
"field": "word_count"
}
}
}
}
},
{
"_index": "school",
"_type": "student",
"_id": "dXfkcWIB-npqvsX5hmWx",
"_score": 1,
"_source": {
"query": {
"match": {
"name": "海哥"
}
}
}
},
{
"_index": "school",
"_type": "student",
"_id": "dnflcWIB-npqvsX5S2V0",
"_score": 1,
"_source": {
"query": {
"multi_match": {
"query": "海哥",
"fields": [
"name",
"address"
]
}
}
}
},
{
"_index": "school",
"_type": "student",
"_id": "fXfqcWIB-npqvsX5yGXf",
"_score": 1,
"_source": {
"query": {
"bool": {
"filter": {
"term": {
"word_count": 2000
}
}
}
}
}
},
{
"_index": "school",
"_type": "student",
"_id": "fnfrcWIB-npqvsX5mGXq",
"_score": 1,
"_source": {
"query": {
"constant_score": {
"filter": {
"match": {
"title": "ElasticSearch"
}
},
"boost": 2
}
}
}
},
{
"_index": "school",
"_type": "student",
"_id": "gHfucWIB-npqvsX5HWUB",
"_score": 1,
"_source": {
"query": {
"bool": {
"must_not": [
{
"term": {
"word_count": "2000"
}
}
]
}
}
}
},
{
"_index": "school",
"_type": "student",
"_id": "HYVJOGIBUtf8tEPshwDC",
"_score": 1,
"_source": {
"name": "張小花",
"address": "山東煙台",
"age": 24,
"date": "1996-07-24"
}
},
{
"_index": "school",
"_type": "student",
"_id": "cHffcWIB-npqvsX59mXN",
"_score": 1,
"_source": {
"aggs": {
"group_by_word_count": {
"terms": {
"field": "word_count"
}
}
}
}
}
]
}
}
2.9 返回name中包含"海",且地址不是"山東煙台"的所有document
POST /school/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "海"
}
}
],
"must_not": [
{
"match": {
"address": "山東煙台"
}
}
]
}
}
}
查詢結果:
{
"took": 73,
"timed_out": false,
"_shards": {
"total": 3,
"successful": 3,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1.0417081,
"hits": [
{
"_index": "school",
"_type": "student",
"_id": "3",
"_score": 1.0417081,
"_source": {
"name": "海哥",
"address": "山東濟寧",
"age": 27,
"date": "1998-03-16"
}
}
]
}
}
3. 過濾查詢
3.1 在所有document中尋找age在0-25歲之間(閉區間)的學生
POST /school/_search
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"range": {
"age": {
"gte": 0,
"lte": 25
}
}
}
}
}
}
4.談論query和filter的效率
一般認為filter的速度快於query的速度
- filter不會計算相關度得分,效率高
- filter的結果可以緩存到內存中,方便再用
原文鏈接:https://blog.csdn.net/linhaiyun_ytdx/article/details/79762926
