ElasticSearch 原生http请求查询操作
分页查询,条件查询
通过请求路径查询数据 http://127.0.0.1:9200/shopping/_search?q=title:上衣 通过请求体查询数据 查询指定条件 { "query" : { "match" : { "title" : "上衣" } } } 查询全部数据 { "query" : { "match_all" : { } } } http://127.0.0.1:9200/shopping/_search 分页查询 使用get { "query" : { "match_all" : { } } "from" : 0, 页码 (当前页 - 1)* 每页展示条数 "size" : 10, 每页展示条数 "_source" : ['title'] , 查询指定字段 "sort" : { "price ": { "order" : "desc" } }, 根据价格排序 } http://127.0.0.1:9200/shopping/_search
多条件查询,范围查询
多条件查询 must代表必须and shold代表or { "query":{ "bool" : { "must" : [ "match" : { "title" : "裤子" }, "match" : { "price" : 100.00 } ], 范围查找price大于5000的数据 "filter" : [ "range" : { "price" : { "gt": 5000 } } ] } } } http://127.0.0.1:9200/shopping/_search get
全文检索,完全匹配
es查询数据会将数据按照分词的形式保存到倒排索引 数据当中如果有“上衣”这个词,查询“上”“衣”,都可以查询出来 如果数据当中有“上衣”, “裤子”这个词, 那么查询 “衣裤”,就会把“上衣”, “裤子”全部查出来,在某些场景下,是不符合需求的 { "query" : { "match" : { "title" : "上衣" } } } 所以需要完全匹配 match_phrase { "query" : { "match_phrase" : { "title" : "上衣" } }, 对查询结果字段高亮显示 "lighlight" : { "fields" : { "category" : {} 会对category字段进行高亮展示 } } }
http://127.0.0.1:9200/shopping/_search get
聚合查询
分组 terns 平均值 avg { "aggs" : { //聚合查询 "price_group" : { //随意取名,价格分组 "terns" : { //分组 "field" : "price" //字段名称 } } }, "size" : 0 //不展示原始数据 }
映射关系
在创建文档的时候,可以声明字段映射关系
{ "properties" : { "name" : { "type" : "text", //text 代表可以分词查找 "index" : true, //true 代表可以索引查找 }, "sex" : { "type" : "keyword", //keyword 代表关键词不可以分词查找 "index" : true, //true 代表可以索引查找 }, "tel" : { "type" : "keyword", //keyword 代表关键词不可以分词查找 "index" : false, //false 代表不可以索引查找,这个字段不支持查找 } } }