ElasticSearch(三) 多种查询、搜索方式

1、query string search 
2、query DSL
3、query filter
4、full-text search
5、phrase search
6、highlight search

第一种:string查询(不适用于生产环境)

1、query string search

格式:  GET /index/type/_search

示例:

GET /ecommerce/product/_search

补充说明:
{
  "took": 6,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 3,
    "max_score": 1,
    "hits": [
      {"json数据。。"}

took:耗费了几毫秒
timed_out:是否超时,这里是没有
_shards:数据拆成了5个分片,所以对于搜索请求,会打到所有的primary shard(或者是它的某个replica shard也可以)
hits.total:查询结果的数量,3个document
hits.max_score:score的含义,就是document对于一个search的相关度的匹配分数,越相关,就越匹配,分数也高
hits.hits:包含了匹配搜索的document的详细数据

query string search的由来,因为search参数都是以http请求的query string来附带的,
也可以通过添加条件的形式对查询做过滤和排序,例如:
GET /ecommerce/product/_search?q=name:chabei&sort=price:desc

第二种:DSL查询

DSL:Domain Specified Language,特定领域的语言

格式:
GET /index/type/_search
{
   "json格式请求体"
}

示例:

--查询所有的数据

GET /ecommerce/product/_search
{
  "query": {"match_all": {}}
}

--条件查询并排序

GET /ecommerce/product/_search
{
  "query": {"match": {
    "name": "chabei"
  }}
  , "sort": [
    {
      "price": {
        "order": "asc"
      }
    }
  ]
}

--分页查询(这里是每页只显示一条,从第0页开始)

GET  /ecommerce/product/_search
{
  "query": {"match_all": {}}
  , "from": 0
  , "size": 1
}

--查询指定字段

GET /ecommerce/product/_search
{
  "query": {"match_all": {}}
  , "_source": ["price"]
}

第三种:query filter查询

示例:

GET /ecommerce/product/_search
{
  "query": {
    "bool": {
      "must": [
        {"match": {
          "name": "chabei" --匹配字段
        }}
      ]
      , "filter": {
        "range": {   --按照范围过滤
          "price": {  --按照价格过滤
            "gte": 0,   --大于0
            "lte": 100  --小于100
          }
        }
      }
    }}
}

第四种:full-text search(全文检索)

示例:
GET /ecommerce/product/_search
{
  "query": {
   "match": {
     "desc": "bu jiankang"
   }
  }
}

全文检索的查询方式match和match-all是不一样的,
match会对数据做倒排索引,根据match中的查询条件去匹配

第五种:phrase search(短语搜索)

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

代码示例:

GET /ecommerce/product/_search
{
  "query": {
   "match_phrase": {
     "desc": "bu jiankang"
   }
  }
}

第六种:highlight search(高亮搜索结果)

示例:
GET /ecommerce/product/_search
{
  "query": {
    "match": {
      "name": "taifugao"
    }
  }
  , "highlight": {
    "fields": {
      "name": {}
    }
  }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值