Elasticsearch进阶一
一丶查询
1.matll_all全文查询:
GET /bank/_search { "query": { "match_all": {} //查出所有 }, "sort": [ { "age": { "order": "desc" //排序 } } ], "from": 0, //从第几个取 从开始 "size": 6, //去几个 "_source": ["balance"] //显示字段 }
2.match根据条件查找
GET /bank/_search { "query": { "match": { "age": 34 //如果是数字,就精确查找;如果是字符串,就模糊查找,对条件进行分 词匹配 } } }
根据全文索引进行检索,根据得分排列。
3.match_parase短语匹配
GET /bank/_search { "query": { "match_phrase": { "address": "Agate Court" //将Agate Court看成一个整体。不将它进行分词。 } } }
注意:加.keyword和不加keyword的区别:
加keyword代表精确查找这个字段,分词出来包含不行。
4.multi_match多字段匹配
GET /bank/_search { "query": { "multi_match": { "query": "mill Sunnyside", "fields": ["address","city"] //其中有一个满足条件即可,query里的条件会进行分词 } } }
5.bool复合查询
GET /bank/_search { "query": { "bool": { "must": [ //必须满足的条件 {"match": { "gender": "f" }}, { "match": { "city": "Winfred" } } ], "must_not": [ //必须不满足的条件 {"match": { "age": "32" }}, { "match": { "firstname": "Java" } } ], "should": [ //可以满足可以不满足 {"match": { "employer": "bsd" }} ] } } }
6.filter过滤
GET /bank/_search { "query": { "bool": { "filter": { "range": { //起过滤作用,与must相似,不同的是不会计算相关性得分。可与must,must_not,should一起使用 "age": { "gte": 10, "lte": 20 } } } } } }
7.term查询
GET /bank/_search { "query": { "term": { "age": 20 //精确查找可以使用term,需要分词检索进行全文搜索就用match,不然查不出来 } } }