elasticsearch查询语句个人理解

  1. 指定要查询出来的商品名称和价格
    GET /ecommerce/product/_search
    {
     "query":{
       "match_all":{}
     },
     "_source": ["name","price"]
    }

    其中,参数‘query’  相当于 mysql中的where,match_all相当于m查询所有;
    _source 相当于m需要查询的字段

  2. 搜索商品名称包括牙膏,而且售价大于25元的商品
    GET /ecommerce/product/_search
    {
     "query":{
       "bool":{
         "must":{
           "match":{
             "name":"yagao"
           }
         },
         "filter":{
           "range":{
             "price":{
               "gt":25
             }
           }
         }
       }
     }
    }
    
    

    其中bool的用法:

    bool查询的使用(相当于mysql中 or ,and...)
    Bool查询对应Lucene中的BooleanQuery,它由一个或者多个子句组成,每个子句都有特定的类型。
    
    must
    返回的文档必须满足must子句的条件,并且参与计算分值
    
    filter
    返回的文档必须满足filter子句的条件。但是不会像Must一样,参与计算分值
    
    should
    返回的文档可能满足should子句的条件。在一个Bool查询中,如果没有must或者filter,有一个或者多个should子句,那么只要满足一个就可以返回。minimum_should_match参数定义了至少满足几个子句。
    
    must_nout
    返回的文档必须不满足must_not定义的条件。

     

  3. ES聚合查询

    range使用方法:
    1.先range{需要查询的字段{聚合查询的条件}}
    
    range{
    需要查询的字段{
    	聚合查询的条件
    	}
    }

     

  4. 全文检索和短语搜索

    全文检索会将输入的搜索拆解开来,去倒排索引里去一一匹配,只要能匹配上任意一个拆解后的单词,就可以作为结果返回
    短语搜索,要求输入的搜索串,必须在指定的字段文本中,完全包含一模一样,才可匹配,才能作为结果返回

GET /ecommerce/product/_search
{
 "query":{
   "match":{
     "producer":"yagao producer"
   }
 }
}
GET /ecommerce/product/_search
{
 "query":{
   "match_phrase":{
     "producer":"yagao producer"
   }
 }
}

全文检索使用:match,短语搜索使用match_phrase

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页