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 代表不可以索引查找,这个字段不支持查找 } } }

 

posted @ 2022-07-17 18:13  -韩  阅读(631)  评论(0编辑  收藏  举报