3.4索引查询
多个索引,只在一个上面按查询,其他的几个索引不查询这种的
3.5过滤查询
可以放在缓存,提升速度,尽量使用filtered查询,不是post_filter,因为前者速度快
3.5.1使用过滤
过滤显示一定条件的文档如,title是a,但是出版时间是1961年的书{query:{match:{tittle:name}},post_filter:term:{year:1961}},post表示查询出来在过滤,filter表示查询之前就过滤
3.5.2过滤器类型
范围过滤gte,lte,gt,lt等
3.5.3exit过滤器
过滤掉给定字段没有值的文档
3.5.4 missing过滤器
过滤掉给定字段有给定值的字段
3.5.5脚本过滤
通过计算值来过滤文档,例如过滤掉所有一个世纪之前的书
3.5.6 类型过滤器
如果多个type例如,book,product可以限定只返回未book的文档
3.5.7 限定过滤器
限定单个分片返回的文档数目,如五个分片,一个返回一个
3.5.8 过滤器的缓存:
加速了使用过滤器的查询,最佳选择是那些可以重复使用的过滤器,exits,missing,range,term,terms缓存默认打开
3.6 高亮显示
简单高亮显示{query:{term:{title:crime}},highlight:{fields:{title:{}}}}3.6.1 字段配置
高亮显示的字段设置为stored或者在_source字段
3.6.2 深入底层
lucene三种高亮,标准类型,fastvectorhighlighter,postingshighlighter三种,es自动选择,如果term_vector设成了
with_positions_offsets则使用fastvvectorhighlighter,如果存储大量数据的字段,推荐fast3.6.3 配置html标签
可以设置pre_tags以及post_tags,来控制如何高亮显示
控制高亮片段,number_of_fragments定义返回片段的数量,fragment_size用来指定高亮片段最大字符长度全局设置与局部设置:不是太懂
3.6.4 需要匹配
例如在des以及name字段均可以高亮,查询name:a的时候,除了name字段高亮,另一个字段也高亮,这种时候需要将require_field_match置为true即可
3.6.5 信息高亮器
posting,需要属性设置为offsets的时候使用,标准的高亮比如说cents of,只是在cents of的时候单独高亮这两个词,但是信息高亮器将说有的cents 以及所有的of高亮,即高亮了所有跟查询匹配的词条,而不仅是组成短语的那些词,并不是cents of在一块才高亮
3.7 验证查询:
使用验证API:可以用来检验所写的查询语句是否正确3.8 数据排序:
3.8.1 默认排序是:
sort:{_source:desc}
3.8.2 制定缺少字段排序:
如果没有我们所排序的字段,升序第一,降序最后
3.8.3 动态条件:
使用脚本来编写
3.8.4 排序规则和国家特有字符:
支持其他语言排序,但是必须安装插件
3.9 查询重写
将昂贵的查询改成不太昂贵的查询,减少代价
3.9.1 查询重写属性
scoring_boolean,constant_score_boolean,constant_core_filter,top_terms_N,top_terms_boost_N如果能忍受精度低,使用top_N重写,如果必须精度高,选择bool重写