ES的搜索方式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mn_kw/article/details/82624165

1. query string search

搜索全部商品:GET /ecommerce/product/_search

搜索商品名称中包含yagao的商品,而且按照售价降序排序:

GET /ecommerce/product/_search?q=name:yagao&sort=price:desc

适用于临时的在命令行使用一些工具,比如curl,快速的发出请求,来检索想要的信息;但是如果查询请求很复杂,是很难去构建

在生产环境,几乎很少使用query string search

took:耗费了几毫秒
time_out:是否超时
_shard:数据拆成了几个分片,对于搜索的请求,会打到所有的primary shard(或者其他的replica shard)
hits.total:查询结果的数量,一共几个document
hits.max_score:score的含义,就是document对于一个search的相关度匹配分数,越相关就越匹配
hits.hits:包含了匹配搜索的document的详细数据

2. query DSL
查询所有的商品
GET /ecommerce/product/_search
{
    "query":{
        "match_all":{
        }
    }
}
查询名称包含yagao的商品,然后按照加个降序
GET /ecommerce/product/_search
{
    "query":{
        "match":{
            "name":"yagao"
        }
    },
    "sort":[
    {
        "price":"desc"
    }
    ]
}
分页查询商品,总共3条商品,假设每页就显示1条商品,现在显示第2页,所以就查出来第二个商品
GET /ecommerce/product/_search
{
    "query":{
        "match_all:{},
        "from":1,
        "size":1
    }
}
指定要查询出来商品的名称和价格就可以
GET /ecommerce/product/_search
{
    "query":{
        "match_all":{},
        "_source":["name","price"]
    }
}
更加适合生产环境的使用,可以构建复杂的查询

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

4. full-text search(全文检索)
GET /ecommerce/product/_search
{
    "query":{
        "match":{
            "producer":"yagao producer"
        }
    }
}

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

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

6. highlight search(高亮搜索)
GET /ecommerce/product/_search
{
    "query":{
        "match":{
            "producer":"producer"
        }
    },
    "highlight":{
        "fields":{
            "producer":{}
        }
    }
}
 

猜你喜欢

转载自blog.csdn.net/mn_kw/article/details/82624165
今日推荐