1、query String search
搜索所有的商品
GET /ecommerce/product/_search
效果
"took": 288 (耗费的毫秒)
"timed_out": false(是否请求超时)
_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
}(查找分区的情况)
"hits": {
"total": 3,
"max_score": 1,
"hits": [
{
"_index": "ecommerce",
"_type": "product",
"_id": "2",
"_score": 1,
"_source": {
"name": "jiajieshiyagao",
"desc": "yaoxiaofangzhu",
"price": "25",
"producer": "jiajieshi producer",
"tags": [
"fangzhu"
]
}
}
(查询数量的情况)
查找商品名称中包含yagao的商品,而且按照售价降序排序
GET /ecommerce/product/_search?q=name:yagao&sort=price:desc
2、query DSL
DSL:Domain specifild language(特定领域的语言)
http request body:请求体,可以用json的格式构建查询语句,比较方便,可以构建各种复杂的查询语句,比query string search强大。
GET /ecommerce/product/_search
{
"query": {
"match_all": {}
}
}
效果
查找商品名称中包含yagao的商品,而且按照售价降序排序
GET /ecommerce/product/_search
{
"query": {
"match": {
"name": "yagao"
}
},
"sort": [
{
"price": "desc"
}
]
}
分页查询商品
GET /ecommerce/product/_search
{
"query": {"match_all": {}},
"from": 1,
"size": 2
}
查询商品名称和价格
GET /ecommerce/product/_search
{
"query": {"match_all": {}},
"_source": ["name","price"]
}
3、query filter
对数据进行过滤
搜索名称 包含yagao,而且售价大于25
GET /ecommerce/product/_search
{
"query": {
"bool": {
"must":
{
"match": {
"name": "yagao"
}
},
"filter": {
"range": {
"price": {
"gt": 25
}
}
}
}
}
}
4、full-text search
全文检索
GET /ecommerce/product/_search
{
"query": {
"match": {
"producer": "yagao producer"
}
}
}
使用到了倒排索引
5、phrase search
短语搜索(和全文检索相对)
全文检索会将输入的字段拆开,去倒排索引里面查询,如果匹配任意一个字符便可以作为结果返回。
phrase search:要求输入的搜索串必须在在指定的字段文本中包含一模一样的。
6、hightlight search
高亮显示