2019最新ElasticSearch6.5.4中多种搜索方式

1、query string search
  搜索全部:GET /index/type/_search
  结果剖析:

"took" : 14, 			耗时几毫秒
 "timed_out" : false,	是否超时,这里没有超时
 "_shards" : {
   "total" : 5,			数据拆成了5个分片,所以对于搜索请求,会达到所以的primary shard(或则是它的某个primary sha也可以)
  "successful" : 5,
  "skipped" : 0,
   "failed" : 0
  },
   "hits" : {
     "total" : 3,			查询结果的数量。3个document
     "max_score" : 1.0,	score的含义:就是document对于一个search的相关度匹配的分数,分数越高,越相关就越匹配
     "hits" : [			包含了搜索匹配的document的详细数据

搜索商品指定名称,并且按照售价进行排序
 格式:

GET /index/type/_search?q=name: 指定名称 & sort= price:desc

2、query DSL:Domain Specified language:特定领域的语言
 http reques body:请求体,可以用json的格式来构建语法,比较简单,可以构建各种复杂的语法,比query string search强大
 查询所有商品:

GET /index/type/_search
{
	"query":{
		"match_all" :{}    //match_all:匹配全文
	}
}

例子:

查询名称包含指定名称的商品,同时售价按照降序排序
GET /index/type/_search
{
  "query": {
    "match": {          //match:只匹配一次
      "name": "指定名称"
    }
  },
  "sort": [
    { "price": "desc"}
  ]
}

分页查询商品,总共3条数据,假设每页显示一条数据,现在显示第二页,查出两条商品
GET /index/type/_search
{
  "query": {
    "match_all": {}
  }, 
  "from": 1,     //从第几条数据开始查
  "size": 2      //显示多少条数据
}
只查询名称和价格
GET /index/type/_search
{
  "query": {
    "match_all": {}
  },
  "_source": ["name","price"]
}

3、query filter(对数据进行过滤)

包含指定商品名称,而且价格大于30元的商品

GET /index/type/_search
{
  "query": {
    "bool": {		//布尔表达式
      "must": {		//必须匹配(这里的意思是和指定商品,必须匹配)
        "match":{
          "name": "指定商品"
        }
      },
      "filter": {
        "range": {			//区间范围
          "price": {"gt": 25}
          }
        }
      }
    }
  }

4、full-text search(全文检索)

GET /index/type/_search
{
  "query": {
    "match": {
      "producer": "yagao producer"
    }
  }
}

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

GET /idnex /type/_search
{
  "query": {
    "match_phrase": {
      "producer": "搜索串"     要求和文本的字段必须匹配或者文本中包含搜索串则被返回
    }
  }
}

6、highlight search(高亮显示)
搜索指定商品名称,并高亮显示

GET /ecommerce/product/_search
{
  "query": {
    "match": {
      "producer": "指定商品"
    }
  },
  "highlight": {
    "fields": {
      "producer":{}			//producer:只是一个字段:也就是高亮的名称在该字段中包含
    }
  }
}

你可能感兴趣的:(ElasticSearch)