我是弹性搜索的新手,一直在阅读他们的API,有些事情对我来说并不清楚
1)据说过滤器是缓存的.那是什么意思?如果我将query用filter就可以了,什么获取缓存?那个查询的结果?如果我发送不同query的相同内容filter,缓存是否会以某种方式帮助我?
我知道这个问题有点模糊,但ElasticSearch的文档也是如此.
2)将术语X与字段或特定字段匹配的查询之间是否存在真正的性能差异"_all"?据我所知,这些查询将与其中一个字段中包含X的所有文档进行比较,唯一的区别在于这些文档中将与X匹配的字段数.那是对的吗?
小智 9
1)关于第一个问题,请查看此链接.引用帖子"过滤器不对文档进行评分 - 它们只是包含或排除.如果文档与过滤器匹配,则在BitSet中用一个表示;否则为零.这意味着Elasticsearch可以存储整个段的过滤器状态("谁匹配这个特定的过滤器?")在一个紧凑的BitSet中.
Elasticsearch第一次执行过滤器时,会解析Lucene段数据结构以确定与过滤器匹配的内容.它不会丢弃这些信息,而是将其缓存在BitSet中.
下次执行相同的过滤器时,Elasticsearch可以引用紧凑的BitSet而不是Lucene段.这具有巨大的性能优势."
2)"_all字段的概念是它包含索引文档中的一个或多个其他字段的文本.它可以非常方便,特别是对于搜索请求,我们希望针对文档内容执行搜索查询,不知道要搜索哪些字段.这是以CPU周期和索引大小为代价的." 链接 因此,如果您知道要查询的字段,请使用特定字段进行搜索.
| 归档时间: |
|
| 查看次数: |
484 次 |
| 最近记录: |