elastisearch javaApi之搜索基础知识

原创 2018年04月17日 16:37:49

搜索API编辑

搜索API允许执行搜索查询并取回匹配查询的搜索匹配。它可以跨越一个或多个索引并跨越一种或多种类型执行。该查询可以使用查询Java API提供。搜索请求的主体是使用SearchSourceBuilder。这里是一个例子:

import org.elasticsearch.action.search.SearchResponse;

import org.elasticsearch.action.search.SearchType;

import org.elasticsearch.index.query.QueryBuilders.*;

SearchResponse response = client.prepareSearch("index1", "index2")

        .setTypes("type1", "type2")

        .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)

        .setQuery(QueryBuilders.termQuery("multi", "test"))                 // Query

        .setPostFilter(QueryBuilders.rangeQuery("age").from(12).to(18))     // Filter

        .setFrom(0).setSize(60).setExplain(true)

        .get();

请注意,所有参数都是可选的。以下是您可以撰写的最小搜索电话:

//使用所有默认选项对整个集群进行MatchAll

SearchResponse response = client.prepareSearch().get();

虽然Java API定义了额外的搜索类型QUERY_AND_FETCH和DFS_QUERY_AND_FETCH,但这些模式是内部优化,不应该由API的用户明确指定。

 

 

«使用聚合  搜索模板» 

终止编辑后

为每个分片收集的文档的最大数量,一旦达到该数量,查询执行将提前终止。如果设置,您就可以检查是否通过操作要求提前终止isTerminatedEarly() SearchResponseonject:

SearchResponse sr = client.prepareSearch(INDEX)

    .setTerminateAfter(1000)    

    .get();

 

if (sr.isTerminatedEarly()) {

    // We finished early

}

 

 

“  聚集后终止 

搜索模板编辑

请参阅搜索模板文档

将模板参数定义为Map<String,Object>

Map<String, Object> template_params = new HashMap<>();

template_params.put("param_gender", "male");

 

您可以在中使用您存储的搜索模板config/scripts。例如,如果您有一个名为config/scripts/template_gender.mustache包含的文件:

{

    "template" : {

        "query" : {

            "match" : {

                "gender" : "{{param_gender}}"

            }

        }

    }

}

 

创建您的搜索模板请求:

SearchResponse sr = new SearchTemplateRequestBuilder(client)

    .setScript("template_gender")                 

    .setScriptType(ScriptService.ScriptType.FILE)

    .setScriptParams(template_params)             

    .setRequest(new SearchRequest())              

    .get()                                        

    .getResponse();                               

 

模板名称

模板存储在磁盘中 gender_template.mustache

参数

设置执行上下文(即在此定义索引名称)

执行并获取模板响应

从模板响应搜索响应本身

您还可以将模板存储在群集状态中:

client.admin().cluster().preparePutStoredScript()

    .setScriptLang("mustache")

    .setId("template_gender")

    .setSource(new BytesArray(

        "{\n" +

        "    \"template\" : {\n" +

        "        \"query\" : {\n" +

        "            \"match\" : {\n" +

        "                \"gender\" : \"{{param_gender}}\"\n" +

        "            }\n" +

        "        }\n" +

        "    }\n" +

        "}")).get();

 

要执行存储的模板,请使用ScriptService.ScriptType.STORED

SearchResponse sr = new SearchTemplateRequestBuilder(client)

        .setScript("template_gender")                       

        .setScriptType(ScriptType.STORED)     

        .setScriptParams(template_params)                   

        .setRequest(new SearchRequest())                    

        .get()                                              

        .getResponse();                                     

 

模板名称

模板存储在集群状态

参数

设置执行上下文(即在此定义索引名称)

执行并获取模板响应

从模板响应搜索响应本身

您也可以执行内联模板:

sr = new SearchTemplateRequestBuilder(client)

        .setScript("{\n" +                                  

                "        \"query\" : {\n" +

                "            \"match\" : {\n" +

                "                \"gender\" : \"{{param_gender}}\"\n" +

                "            }\n" +

                "        }\n" +

                "}")

        .setScriptType(ScriptType.INLINE)    

        .setScriptParams(template_params)                  

        .setRequest(new SearchRequest())                   

        .get()                                             

        .getResponse();                                    

 

模板名称

模板内联传递

参数

设置执行上下文(即在此定义索引名称)

执行并获取模板响应

从模板响应搜索响应本身

 

 

 

聚合编辑

Elasticsearch提供了一个完整的Java API来玩聚合。请参阅 聚合指南

使用工厂生成聚合构建器(AggregationBuilders),并在查询时添加要计算的每个聚合并将其添加到搜索请求中:

SearchResponse sr = node.client().prepareSearch()

        .setQuery( /* your query */ )

        .addAggregation( /* add an aggregation */ )

        .execute().actionGet();

请注意,您可以添加多个聚合。详细信息请参阅 搜索Java API

要构建聚合请求,请使用AggregationBuilders助手。只需将它们导入你的课堂:

import org.elasticsearch.search.aggregations.AggregationBuilders;

构建聚合

“ 聚合指南中所述,您可以在 聚合中定义子聚合。

聚合可以是度量聚合或桶聚合。

例如,这里是一个3级聚合组成:

· 术语聚合(桶)

· 日期直方图聚合(存储区)

· 平均聚合(度量)

SearchResponse sr = node.client().prepareSearch()

    .addAggregation(

        AggregationBuilders.terms("by_country").field("country")

        .subAggregation(AggregationBuilders.dateHistogram("by_year")

            .field("dateOfBirth")

            .dateHistogramInterval(DateHistogramInterval.YEAR)

            .subAggregation(AggregationBuilders.avg("avg_children").field("children"))

        )

    )

    .execute().actionGet();

elastisearch javaApi之客户 端基础知识

    在版本2.0之前,Elasticsearch作为JAR提供,其中一些(但不是全部)通用依赖项被阴影化并打包在相同的工件中。这有助于将Elasticsearch嵌入到他们自己的应用程序中的Jav...
  • weixin_41404773
  • weixin_41404773
  • 2018-04-17 14:58:48
  • 6

Java日记——使用强大的Elastisearch搜索引擎

Elastisearch是一个很强大,易用的搜索引擎 在系统上运行Elastisearch只需以下几步1.下载Elastisearchwget https://artifacts.elastic.c...
  • qq_32198277
  • qq_32198277
  • 2017-05-19 17:07:46
  • 395

ES学习笔记(2)--- javaAPI搜索篇

先来几张大神同事分享的ppt多的不说,快快上码public PageInfo getAllRelatedPage(String keyword, String sortRule ,int pageSi...
  • zyt425916200
  • zyt425916200
  • 2017-06-26 21:00:35
  • 694

elastisearch搜索书名和作者

elastisearch搜索书名和作者这篇文章有点水,北京干燥,放点水湿润空气大致步骤i. 找几个书名和作者名 ii. 创建索引和mapping iii. 导入信息 iv. 提供搜索...
  • cabing2005
  • cabing2005
  • 2017-01-11 16:35:30
  • 380

ElastiSearch使用笔记

在JS端使用elastic.js 处理 1.查询: body = ejs.Request().query(ejs.QueryStringQuery("检索字符串").defaultOperator('...
  • hhl2046
  • hhl2046
  • 2016-10-31 15:38:09
  • 749

ElastiSearch官方文档部分中文版

  • 2014年10月23日 17:18
  • 1.19MB
  • 下载

书评:《算法:C语言实现(第1~4部份) 基础知识、数据结构、排序及搜索(原书第3版))

本书细腻讲解计算机算法的c语言实现。全书分为四部分,共16章。包括基本算法分析原理,基本数据结构、抽象数据结构、递归和树等数据结构知识,选择排序、插入排序、冒泡排序、希尔排序、快速排序方法...
  • chengxuyuyan
  • chengxuyuyan
  • 2011-03-28 16:30:00
  • 937

j2se6中文网页版

  • 2015年05月11日 10:46
  • 34.9MB
  • 下载

算法:C语言实现(第1-4部分)基础知识、数据结构、排序及搜索(原书第3版)

  • 2014年04月07日 10:48
  • 37.82MB
  • 下载

javaseApi开发文档

  • 2011年09月19日 11:13
  • 34.76MB
  • 下载
收藏助手
不良信息举报
您举报文章:elastisearch javaApi之搜索基础知识
举报原因:
原因补充:

(最多只允许输入30个字)