ElasticSearch学习笔记(五):ElasticSearch六种简单的查询操作

一、query string search

查询所有格式:GET /index/type/_search
query string search的由来,因为search参数都是以http请求的query string来附带的。
例:查询所有商品名带qiu的商品,并且按照价格降序排序
GET /index/type/_search?q=name:qiu&sort=price:desc

如果报错,将price改为price.keyword,因为ElasticSearch中字段默认为text,text默认不能进行分析聚合操作,故改为keyword即可以分析聚合操作,详细介绍看
详细介绍
适用于临时的在命令行使用一些工具,比如curl,快速的发出请求,来检索想要的信息;但是如果查询请求很复杂,是很难去构建的。在生产环境中,几乎很少使用query string search

二、query DSL

DSL:Domain Specified Language,特定领域的语言
http request body:请求体,可以用json的格式来构建查询语法,比较方便,可以构建各种复杂的语法,比query string search强大很多。

1,查询所有商品:
GET /shop/product/_search
{
	"query":{
		"match_all":{}
	}
}2,查询所有商品名带qiu的商品,并且按照价格降序排序:
GET /shop/product/_search
{
  "query":{
    "match":{
      "name":"qiu"
    }
  },
  "sort":[
      {"price.keyword":"desc"}
    ]
}3,分页查询商品,假如每页一个商品,现在要查询第二页
GET /shop/product/_search
{
	"query":{
		"match_all":{}
	},
	"from":1,
	"size":1
}
from:从第几条数据开始(第一条数据的索引为0)
size:每页显示几条数据
例4,指定要查询出来商品的名称和价格就可以:
GET /shop/product/_search
{
	"query":{
		"match_all":{}
	},
	"_source":["name","price"]
}

query DSL 更加适合生产环境的使用,可以构建复杂的查询

三、query filter

例:获得商品名中包含qiu且价格在19-31之间的所有商品
GET /shop/product/_search
{
  "query": {
    "bool": {
      "must": [
        {"match": {
          "name": "qiu"
        }}
      ],
      "filter": {
        "range": {
          "price": {
            "gte": 19,
            "lte": 31
          }
        }
      }
    }
  }
}

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

例:查询描述中带zu qiu的所有商品
GET /shop/product/_search
{
	"query":{
		"match":{
			"desc":"zu qiu"
		}
	}
}
此时会返回所有商品带zu或者带qiu的商品,因为全文检索时,会将 zu qiu 拆分为zu和qiu然后去倒排索引中查询相关的数据,但是匹配度越高的score(分数)越高,匹配程度也越高

五、phrase search(短语搜索)

例:查询商品描述包含短语zu qiu的数据
GET /shop/product/_search
{
	"query":{
		"match_phrase":{
			"desc":"zu qiu"
		}
	}
}
此时只会返回包含短语 zu qiu的商品信息,不会将zu qiu拆分,与全文检索相反

六、highlight search(高亮搜索结果)

例:查询商品描述包含zu qiu的商品信息,并且将zu qiu高亮
GET /shop/product/_search
{
  "query":{
    "match": {
      "desc": "zu qiu"
    }
  },
  "highlight": {
    "fields": {
      "desc":{}
    }
  }
}
返回结果中会多一条数据,使用html标签高亮相应的词
"highlight": {
          "desc": [
            "ti de zu qiu"
          ]
        }

参考资料:中华石杉

你可能感兴趣的:(ElasticSearch学习笔记(五):ElasticSearch六种简单的查询操作)