1.Query context
1.1模糊查询goods索引name属性
请求地址:
http://localhost:9200/goods/_search
请求参数:
{
"query": {
"match": {
"name": "太平鸟衬衣"
}
}
}
选择post提交。
在使用模糊查询需要注意一点,上面搜索的条件是“耐克衬衣”,结果搜索出了“耐克运动鞋”和“橘红色衬衣”。因为es会把goods索引里面所有name包含了“耐克”,“衬衣”,“衣”都会检索出来,这就有点像是分词搜索了,和关系型数据库模糊搜索还存在差异的。
1.2习语匹配查询goods索引name属性
请求地址:
http://localhost:9200/goods/_search
请求参数:
{
"query": {
"match_phrase": {
"name": "耐克运动"
}
}
}
选择post提交。
习语匹配就和我们关系型数据库模糊搜索就很相似了。
1.3多条件模糊查询goods索引name,describe
请求地址:
http://localhost:9200/goods/_search
请求参数:
{
"query": {
"multi_match": {
"query": "耐克",
"fields": [
"name",
"describe"
]
}
}
}
选择post提交。
可以看到检索出来name,describe属性有“紫色”,“巴”的文档。
1.4全文本goods索引文本查询
请求参数:
http://localhost:9200/goods/_search
请求地址:
{
"query": {
"query_string": {
"query": "耐克 or 巴啦啦"
}
}
}
选择post提交。
query_string是文本查询的关键字,通常在Kibana中使用。语法查询支持AND和OR文本查询。还支持“(巴啦啦 AND 耐克) OR 太平鸟”这种文本查询。因为我们这里并没有检索哪些属性,所以这是全文本检索。
1.5指定name,describe属性文本查询goods索引文档信息
请求参数:
http://localhost:9200/goods/_search
请求地址:
{
"query": {
"query_string": {
"query": "(耐克 AND 跑鞋) or 紫色",
"fields": [
"name",
"describe"
]
}
}
}
选择post提交。
1.6通过具体项查询
请求地址:
http://localhost:9200/goods/_search
请求参数:
{
"query": {
"term": {
"price": 320
}
}
}
选择post提交
term使用具体项作为关键字。查询price为320的文档信息。
1.7通过范围查询
请求地址:
http://localhost:9200/goods/_search
请求参数:
{
"query": {
"range": {
"date": {
"gte": "2019-03-01",
"lte": "now"
}
}
}
}
选择post提交。
range是范围查询的关键字。查询了date属性大于2019-03-01,小于now当前时间。
2.Filter context
filter查询后存在缓存里面,相对应query更快一些。
2.1使用filter查询
请求地址:
http://localhost:9200/goods/_search
请求参数:
{
"query": {
"bool": {
"filter": {
"term": {
"price": 320
}
}
}
}
}
选择post提交。