GET /student_info/_search{ "query": {"match_all": {}}}
二、根据条件查询GET /student_info/_search{ "query":{ "match":{ "name":"张三" } }}
三、排序GET /student_info/_search{ "query":{ "match":{ "name":"张三" } }, "sort":[{ "age":"desc" }]}
四、指定查询返回结果字段GET /student_info/_search{ "query":{"match_all": {}}, "_source": ["name","age"]}
二、批量查询 一、多ID查询GET /student_info/_search{ "query":{ "ids":{ "values":[11001,11002,11003] } }}
二、单索引批量查询POST /student_info/_mget{ "ids":["11001","11002","11003"]}
三、跨索引批量查询GET /_mget{ "docs":[ { "_index":"student_info", "_id":"11001" }, { "_index":"teacher", "_id":"1001" } ]}
四、跨索引批量查询GET /_msearch{"index":"student_info"}{"query":{"match_all":{}},"from":0,"size":4}{"index":"teacher"}{"query":{"match_all":{}}}
三、匹配查询 一、关键词分词查询先对match里面的字段值进行分词,然后进行查询
“profession”: “计算机技术” :分词结果为 “计算机”、 “技术”,查询profession包含 "计算机"和 "技术"的记录
GET /student_info/_search{ "query":{ "match":{ "profession":"计算机技术" } }}
GET /student_info/_search{ "query":{ "match":{ "profession":"计算机酒店" } }}
二、关联查询“profession”: “计算机技术” :分词结果为 “计算机”、 “技术”,查询条件"operator": “and”,必须满足全部分词结果。
GET /student_info/_search{ "query":{ "match":{ "profession": { "query":"计算机技术", "operator": "and" } } }}
“profession”: “计算机技术” :分词结果为 “计算机”、 “技术”,查询条件"operator": “or”,任意满足其一。
GET /student_info/_search{ "query": { "match":{ "profession": { "query": "计算机酒店", "operator": "or" } } }}
三、多字段查询检索内容"我计算机技术" , 会拆词为“我”,“计算机”,“技术”匹配字段profession或desc字段中包含拆出来的词语的结果
GET /student_info/_search{ "query":{ "multi_match": { "query": "我计算机技术", "fields": ["profession","desc"] } }}
四、短语查询match_phrase短语搜索,要求所有的分词必须同时出现在文档中,同时位置必须紧邻一致。
GET /student_info/_search{ "query": { "match_phrase": { "profession": "计算机科" } }}
五、高亮搜索
highlight 高亮查找
pre_tags 标签前缀
post_tags 标签后缀
fields 规定的字段,支持多个
注意:如果不声明前缀和后缀,那边默认使用
GET /student_info/_search{ "query":{ "match":{ "name":"张三" } }, "highlight": { "pre_tags":" ", "post_tags": "
GET /student_info/_search{ "query": { "match_phrase_prefix": { "name":"小小" } }}
四、模糊查询GET /student_info/_search{ "query":{ "fuzzy":{ "name":"张" } }}
五、精确查询term是关键词查询,参数类型type 一般都是是keyword , 精确查询,对查询的值不分词,直接进倒排索引去匹配。
term 精确查找(单个)terms 精确查找(多个)
GET /student_info/_search{ "query":{ "term":{ "name.keyword": "张三" } }}
terms表示多条件并列,用大括号 [ ] 涵盖所查内容,类似于MySql中in方法
GET /student_info/_search{ "query": { "terms":{ "age":[19,20,21,22] } }}
六、范围查询 一、range大于-gt,小于-lt,大于等于-gte,小于等于-lte
数字范围
GET /student_info/_search{ "query": { "range":{ "age":{ "gte":19, "lte":21 } } }}
时间范围
GET /student_info/_search{ "query": { "range":{ "birthday": { "gte": "2001-06-15", "lte": "2001-09-20" } } }}
二、from…to范围查询包含边界
GET /student_info/_search{ "query":{ "range":{ "age":{ "from":19, "to":21 } } }}
范围查询不包含边界
GET /student_info/_search{ "query": { "range":{ "age":{ "from":19, "to":21, "include_lower":false, "include_upper":false } } }}
七、通配符查询注:?用来匹配任意字符,*用来匹配零个或者多个字符,主要用于-英文检索
GET /student_info/_search{ "query":{ "wildcard":{ "english_name": "xiaoxiao*" } }}
GET /student_info/_search{ "query":{ "wildcard": { "english_name": "li?i" } }}
八、must查询
must的多条件都必须满足
must相当于MySQL条件中的AND
GET /student_info/_search{ "query":{ "bool":{ "must":[{ "match":{ "name":"小小" } }, { "range":{ "age":{ "gt":19, "lte":22 } } } ] } }}
九、should查询should的条件,至少满足一个就可以should相当于MySQL条件中的OR
GET /student_info/_search{ "query":{ "bool":{ "should":[{ "match":{ "name":"小小" } }, { "range":{ "age":{ "gt":19, "lte":22 } } }] } }}
十、过滤查询GET /student_info/_search{ "query":{ "bool":{ "should":[ { "match":{ "name":"小小" } }], "filter":{ "range":{ "age":{ "gt":21, "lte":22 } } } } }}