elasticsearch 高级

版权声明:转载请注明出处 https://blog.csdn.net/Lee_Suoer/article/details/88982558

term vector介绍:

获取document中的某个field内的各个term的统计信息

term statistics: 设置term_statistics=true; total term frequency, 一个term在所有document中出现的频率; document frequency,有多少document包含这个term

field statistics: document count,有多少document包含这个field; sum of document frequency,一个field中所有term的df之和; sum of total term frequency,一个field中的所有term的tf之和

term vector,涉及了很多的term和field相关的统计信息,有两种方式可以采集到这个统计信息

(1)index-time,你在mapping里配置一下,然后建立索引的时候,就直接给你生成这些term和field的统计信息了
(2)query-time,你之前没有生成过任何的Term vector信息,然后在查看term vector的时候,直接就可以看到了,会on the fly,现场计算出各种统计信息,然后返回给你

一般来说,如果条件允许,你就用query time的term vector就可以了,你要探查什么数据,现场去探查一下就好了

高亮显示:


highlight中的field,必须跟query中的field一一对齐的

plain highlight,lucene highlight,默认

posting highlight,index_options=offsets

(1)性能比plain highlight要高,因为不需要重新对高亮文本进行分词
(2)对磁盘的消耗更少
(3)将文本切割为句子,并且对句子进行高亮,效果更好

fast vector highlight

index-time term vector设置在mapping中,就会用fast verctor highlight

对大field而言(大于1mb),性能更高

强制使用某种highlighter,比如对于开启了term vector的field而言,可以强制使用plain highlight

总结一下,其实可以根据你的实际情况去考虑,一般情况下,用plain highlight也就足够了,不需要做其他额外的设置
如果对高亮的性能要求很高,可以尝试启用posting highlight
如果field的值特别大,超过了1M,那么可以用fast vector highlight

设置高亮html标签,默认是<em>标签

高亮片段fragment的设置

fragment_size: 你一个Field的值,比如有长度是1万,但是你不可能在页面上显示这么长啊。。。设置要显示出来的fragment文本判断的长度,默认是100
number_of_fragments:你可能你的高亮的fragment文本片段有多个片段,你可以指定就显示几个片段

search template入门

toJson

join

conditional

保存search template ,  在config/scripts,.mustache 结尾的文件,内容:

查询

suggest,completion suggest,自动完成,搜索推荐,搜索提示 --> 自动完成,auto completion

completion,es实现的时候,是非常高性能的,会构建不是倒排索引,也不是正拍索引,就是纯的用于进行前缀搜索的一种特殊的数据结构,而且会全部放在内存中,所以auto completion进行的前缀搜索提示,性能是非常高的

定制自己的动态模板

将默认的动态模板long映射为integer

根据字段名映射

地理位置操作:

推荐这么写; latitude:维度 longitude:经度

比如41.12,-71.34就是一个酒店,然后我们现在搜索的是从42,-72(代表了大厦A)和40,-74(代表了马路B)作为矩形的范围,在这个范围内的酒店,是什么

我们现在要指定东方明珠大厦,上海路,上海博物馆,这三个地区组成的多边形的范围内,我要搜索这里面的酒店

搜索当前位置附近的

距离当前位置每个距离范围内

m (metres) but it can also accept: m (miles), km (kilometers)

sloppy_arc (the default), arc (most accurate) and plane (fastest)

猜你喜欢

转载自blog.csdn.net/Lee_Suoer/article/details/88982558