经常使用的过滤器(filter context)会被Elasticsearch自动缓存,以提高性能。每当一个查询子句被传递给过滤器参数(filter)时,过滤器上下文就会生效,例如bool查询中的filter或must_not参数、或filter查询中的常量查询(constant_score)或filter查询。
举例如下:
GET /_search
{
“query”: { // @1
“bool”: { // @2
“must”: [
{ “match”: { “title”: “Search” }}, // @3
{ “match”: { “content”: “Elasticsearch” }} // @4
],
“filter”: [ // @5
{ “term”: { “status”: “published” }},
必看视频!获取2024年最新Java开发全套学习资料 备注Java
// @6
{ “range”: { “publish_date”: { “gte”: “2015-01-01” }}} // @7
]
} // end bool
} // end query
}
代码@1:query参数定义查询上下文,query参数为elasticsearch的查询上下文。
代码@2:使用elasticsearch的bool查询表达式,会在后续详细介绍。
代码@3:查询上下文,使用关键字match,表示title字段中包含"Search"字符即认为匹配。(可以类比关系型数据库 a.title like ‘%Search%’)
代码@4:查询上下文,使用关键字match,表示content字段中包含"Elasticsearch"字符即认为匹配。
代码@5:定义过滤上下文。
代码@6:使用term(完整匹配),即status字段的值是否是“published”。(相当于关系型数据库的 a.status = ‘published’)
代码@7:使用range,代表范围匹配,即publish_date字段的值是否大于等于2015-01-01。(相当于a.publish_date >= 2015-01-01’)。
下一篇将开始介绍 elasticsearch 的重头戏:查询语法。
见文如面,我是威哥,热衷于成体系剖析JAVA主流中间件,关注公众号『中间件兴趣圈』,回复专栏可获取成体系专栏导航,回复资料可以获取笔者的学习思维导图。
总结
阿里伤透我心,疯狂复习刷题,终于喜提offer 哈哈~好啦,不闲扯了
1、JAVA面试核心知识整理(PDF):包含JVM,JAVA集合,JAVA多线程并发,JAVA基础,Spring原理,微服务,Netty与RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算共30个章节。
2、Redis学习笔记及学习思维脑图
3、数据面试必备20题+数据库性能优化的21个最佳实践
…(img-sWoQNuaE-1716439466831)]
3、数据面试必备20题+数据库性能优化的21个最佳实践
[外链图片转存中…(img-IHjNNIBu-1716439466831)]