015-elasticsearch5.4.3【五】-搜索API【四】Joining 多文档查询、GEO查询、moreLikeThisQuery、script脚本查询、span跨度查询

1、Joining 多文档查询

joining query
  像Elasticsearch这样的分布式系统中执行完整的SQL样式链接很是昂贵。相反,Elasticsearch提供两种形式的链接,旨在水平扩展。主要包含如下两种:
嵌套查询
  文档可能包含嵌套类型的字段。这些字段用于索引对象数组,其中每一个对象均可以做为独立文档查询(使用嵌套查询)。
父子查询
  父子关系能够存在于单个索引中的两种文档类型之间。has_child查询返回其子文档与指定查询匹配的父文档,而has_parent查询返回其父文档与指定查询匹配的子文档。

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

此查询基于文档查找过滤器查询。

参看地址:https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.4/java-specialized-queries.html#java-query-percolate-query

4、span跨度查询

  跨度查询是低级位置查询,能够对指定术语的顺序和接近度进行专家控制。这些一般用于对法律文件或专利实施很是具体的查询。

  跨度查询不能与非跨度查询混合(span_multi查询除外)。 该组中的查询是:

  更多:https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.4/java-span-queries.html

相关文章
相关标签/搜索