1、Joining 多文档查询
1.一、nestedQuery嵌套查询
地址:URLhtml
1.二、hasChildQuery经过自查父java
1.三、hasParentQuery经过父查子json
2、GEO 查询【地图查询】api
详细地址:https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.4/java-geo-queries.html数组
3、专业查询
3.一、moreLikeThisQuery实现基于内容的推荐
此查询查找与指定的文本,文档或文档集相似的文档。elasticsearch
基于内容的推荐一般是给定一篇文档信息,而后给用户推荐与该文档相识的文档。Lucene的api中有实现查询文章类似度的接口,叫MoreLikeThis。Elasticsearch封装了该接口,经过Elasticsearch的More like this查询接口,咱们能够很是方便的实现基于内容的推荐。
先看一个查询请求的json例子:分布式
{ "more_like_this" : {"fields" : ["title", "content"],"like_text" : "text like this one"}}
其中fields是要匹配的字段,若是不填的话默认是_all字段ide
like_text是匹配的文本。ui
除此以外还能够添加下面条件来调节结果this
percent_terms_to_match:匹配项(term)的百分比,默认是0.3
min_term_freq:一篇文档中一个词语至少出现次数,小于这个值的词将被忽略,默认是2
max_query_terms:一条查询语句中容许最多查询词语的个数,默认是25
stop_words:设置中止词,匹配时会忽略中止词
min_doc_freq:一个词语最少在多少篇文档中出现,小于这个值的词会将被忽略,默认是无限制
max_doc_freq:一个词语最多在多少篇文档中出现,大于这个值的词会将被忽略,默认是无限制
min_word_len:最小的词语长度,默认是0
max_word_len:最多的词语长度,默认无限制
boost_terms:设置词语权重,默认是1
boost:设置查询权重,默认是1
analyzer:设置使用的分词器,默认是使用该字段指定的分词器面介绍下如何用java api调用,一共有三种调用方式,不过本质上都是同样的,只不过是作了一些不一样程度的封装。
3.二、script脚本查询
此查询容许脚本充当过滤器。另请参阅function_score查询。
3.三、PercolateQueryBuilder
此查询基于文档查找过滤器查询。
4、span跨度查询
跨度查询是低级位置查询,能够对指定术语的顺序和接近度进行专家控制。这些一般用于对法律文件或专利实施很是具体的查询。
跨度查询不能与非跨度查询混合(span_multi查询除外)。 该组中的查询是:
更多:https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.4/java-span-queries.html