- 指定要查询出来的商品名称和价格
GET /ecommerce/product/_search { "query":{ "match_all":{} }, "_source": ["name","price"] }
其中,参数‘query’ 相当于 mysql中的where,match_all相当于m查询所有;
_source 相当于m需要查询的字段 - 搜索商品名称包括牙膏,而且售价大于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定义的条件。
-
ES聚合查询
range使用方法: 1.先range{需要查询的字段{聚合查询的条件}} range{ 需要查询的字段{ 聚合查询的条件 } }
-
全文检索和短语搜索
全文检索会将输入的搜索拆解开来,去倒排索引里去一一匹配,只要能匹配上任意一个拆解后的单词,就可以作为结果返回
短语搜索,要求输入的搜索串,必须在指定的字段文本中,完全包含一模一样,才可匹配,才能作为结果返回
GET /ecommerce/product/_search
{
"query":{
"match":{
"producer":"yagao producer"
}
}
}
GET /ecommerce/product/_search
{
"query":{
"match_phrase":{
"producer":"yagao producer"
}
}
}
全文检索使用:match,短语搜索使用match_phrase