七、ElasticSearch类似Mysql的not in 和 in 查询

本文详细介绍了ElasticSearch的查询语法,包括IN查询、NOTIN查询、分页、排序及多字段匹配查询。示例展示了如何实现类似MySQL的IN和NOTIN功能,并提供了商品搜索的实用查询示例,强调了在实际应用中如何进行高效的数据检索和排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • ElasticSearch 的IN查询
//查询数据在goods_id为[1,2,3]的所有数据,类似Mysql IN (1,2,3)
{
 "query":{
    "bool": {
	"must": [
		{
    		"match_all":{}
		}, 
		{
			"terms": {
				"goods_id": [1,2,3]
			}
		}
		]
	}
    
  }
}
 
 
//匹配查询多数用在商城首页商品搜索(推荐)
 
{
	"from": 0,
	"query": {
		"bool": {
			"must": [{
				"multi_match": {
					"fields": ["goods_name", "brand"],
					"query": "北京测试商品001-3",
					"type": "most_fields"
				}
			}]
		}
	},
	"size": 100,
	"sort": {		
	  "price": {
			"order": "desc"
		},
		"views": {
			"order": "desc"
		}
	}
}
  • ElasticSearch 的 NOT IN 查询
//查询数据不在goods_id为[1,2,3]的所有数据,类似Mysql NOT IN (1,2,3)
{
 "query":{
    "bool": {
	"must": [
		{
    		"match_all":{}
		}
		]
	},
	"must_not"[
			{
			"terms": 
				{
					"goods_id": [1,2,3]
				}
			}]
		}
	]
  }
}
  •  ElasticSearch 分页、排序以及多字段匹配查询
//分页、排序以及多字段匹配查询,fields为查询关键词需要匹配的字段;query关键词;type查询类型 most_fields总体算分最高的
{
	"from": 0,
	"query": {
		"bool": {
			"must": [{
				"multi_match": {
					"fields": ["goods_name", "brand"],
					"query": "北京测试商品001-3",
					"type": "most_fields"
				}
			}, 
			{
				"terms": {
					"goods_id": [6]
				}
			}]
		}
	},
	"size": 100,
	"sort": {
		"mall_sort_order": {
			"order": "desc"
		},
		"sales": {
			"order": "desc"
		}
	}
}
  •  ElasticSearch 按照单个字段算分从高到低进行排序
 
{
	"from": 0,
	"query": {
		"bool": {
			"must": [{
				"multi_match": {
					"fields": ["goods_name", "brand"],
					"query": "神经系统",
					"type": "best_fields"
				}
			}]
		}
	},
	"size": 100,
	"sort": {
	  "_score":{
	    	"order": "desc"
	  }
	}
}
 
 
等同于
POST dev_shop_index/_search
{
 "query":{
  "dis_max" : {
   "queries":[
    {
     "match":{
      "goods_name" : "神经系统"
     }
    },
    {
     "match" : {
      "brand" : "神经系统"
     }
    }
    }
   ]
  }
 }
}
 
 
 
等同于
{
  "query": {
    "multi_match": {
		"fields": ["goods_name", "brand"],
		"query": "神经系统",
		"type": "best_fields"
    }
  } 
}
 
 
 
 
 
 
 
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值