Elasticsearch简单问题小结
♠ ♥ ♦ ♣ 该文章仅为平时的笔记,非商用,如有侵权请联系博主删除 ♣ ♦ ♥ ♠
1、terms 和term 的区别
在查询的字段只有一个值的时候,使用term,在查询字段包含多个的时候才使用terms。
"term":{
"lang":1
}
"terms":{
"domain":[
"dailymasala.co",
"goldenmob.com"
]
}
2、filter 和query的区别
(1)在query(查询)中,查询操作不仅仅会进行查询,还会计算分值,用于确定相关度;在filter(过滤器)中,查询操作仅判断是否满足查询条件。
(2)filter(过滤器)中,查询的结果可以被缓存。
(3)filter(过滤器)查询速度快(不需要计分。还有可以缓存)
(4)全文检索以及任何使用相关性评分的场景使用query检索,除此之外的其他使用filter过滤器过滤。
(5)一般用法:使用query进行全文检索后,对全文检索的结果用filter检索。
(6)例子:
GET /_search
{
"query": {
"bool": {
"must": [
{ "match": { "name": "albert" }},
{ "match": { "content": "science" }}
],
"filter": [
{ "term": { "country": "cn" }},
{ "range": { "date": { "gte": "2200-10-08" }}}
]
}
}
}
参考:https://blog.youkuaiyun.com/laoyang360/article/details/80468757
仅作为日常笔记使用,有点简单,大家有什么想法也可以交流哟~

本文详细解析了Elasticsearch中terms与term的区别,以及filter与query的不同应用场景。介绍了在查询字段为单值时使用term,多值时使用terms。filter用于快速过滤,不计分且可缓存,而query则用于全文检索并计分。通过具体实例展示了如何结合两者提高搜索效率。
371

被折叠的 条评论
为什么被折叠?



