elasticsearch query 和 filter 的区别
所属分类 elasticsearch
浏览量 1059
query 和 filter ,都可以写查询条件,语法类似
query 上下文的条件用来给文档打分,匹配越好 _score 越高 ,结果集按照 _score 由高到低排序
Query结果不会缓存
filter 的条件只产生两种结果 ,符合与不符合 ,_score属性值都为0
Filter结果会缓存
只有几个文档匹配的query查询 可能会比跨越数百万个文档的 filter 表现得更好
但是一般来说,fiter性能优于query查询
filter过滤机制
bitset 文档匹配为1,否则为0
用相同的filter执行查询将重用此信息
添加或更新文档时,bitset也会更新
ebay 的 ES 使用经验
Use filter context instead of query context if possible.
filter快在两个方面
1 结果缓存
2 不计算分值
{
"query": {
"bool": {
"must": [
{ "match": { "title": "Search" }},
{ "match": { "content": "Elasticsearch" }}
],
"filter": [
{ "term": { "status": "published" }},
{ "range": { "publish_date": { "gte": "2015-01-01" }}}
]
}
}
}
{
"query": {
"bool": {
"filter": [
{"term": {"type": "article"}},
{"term": {"title": "java"}},
{"term": {"category": "java"}},
{"match": {"content": "架构师"}},
{"range": {"view_count": {"lte":900,"gte":200}}}
]
}
}
}
{
"query": {
"bool": {
"must": [
{ "match": { "title": "java"}},
{ "match": { "content": "架构师" }}
],
"filter": [
{ "term": { "type": "article" }},
{ "range": { "view_count": { "gte": 50}}}
]
}
}
}
上一篇
下一篇
elasticsearch profile 使用简介
Elasticsearch聚合分析简介
elasticsearch 查询 DSL 指定分词器
doc_values和fielddata
Elasticsearch zen discovery
elasticsearch索引原理