zoukankan      html  css  js  c++  java
  • 015-elasticsearch5.4.3【五】-搜索API【四】Joining 多文档查询、GEO查询、moreLikeThisQuery、script脚本查询、span跨度查询

    一、Joining 多文档查询

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

    1.1、nestedQuery嵌套查询

    地址:URL

    1.2、hasChildQuery通过自查父

    1.3、hasParentQuery通过父查子

    二、GEO 查询【地图查询】

    详细地址:https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.4/java-geo-queries.html

    三、专业查询

    3.1、moreLikeThisQuery实现基于内容的推荐

      此查询查找与指定的文本,文档或文档集类似的文档。

      基于内容的推荐通常是给定一篇文档信息,然后给用户推荐与该文档相识的文档。Lucene的api中有实现查询文章相似度的接口,叫MoreLikeThis。Elasticsearch封装了该接口,通过Elasticsearch的More like this查询接口,我们可以非常方便的实现基于内容的推荐。 
    先看一个查询请求的json例子:

    { "more_like_this" : {"fields" : ["title", "content"],"like_text" : "text like this one"}} 

    其中fields是要匹配的字段,如果不填的话默认是_all字段

    like_text是匹配的文本。

    除此之外还可以添加下面条件来调节结果

    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.2、script脚本查询

    此查询允许脚本充当过滤器。另请参阅function_score查询。

    3.3、PercolateQueryBuilder

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

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

    四、span跨度查询

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

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

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

     

     
  • 相关阅读:
    nodejs简易代理服务器
    request发送json-rpc请求
    nodejs使用sequelize操作mysql实例
    nodejs添加jsonwebtoken验证
    .net core下使用DbProviderFactories.GetFactory("")无法创建工厂的解决方案
    .net core 后台如何生成html字符串到前台_后台html字符串在前台显示编码状态
    .net core入门-跨域访问配置
    .net core入门-项目启动时报错:HTTP Error 502.5
    .net core项目启动时报_未处理Socket异常(以一种访问权限不允许的方式做了一个访问套接字的尝试。)
    winform批量更新数据_长时间的执行会导致界面卡死
  • 原文地址:https://www.cnblogs.com/bjlhx/p/8535383.html
Copyright © 2011-2022 走看看