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)