RestHighLevelClient实现ElasticSearch关联查询之父子文档

这篇具有很好参考价值的文章主要介绍了RestHighLevelClient实现ElasticSearch关联查询之父子文档。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

RestHighLevelClient实现ElasticSearch关联查询之父子文档今天分享,承接上一篇内容:

DSL操作关联查询

这篇我们通过javaAPI的方式实现:

一、springboot 配置

1、pom文件引用:

      <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.9.3</version>
            <exclusions>
                <exclusion>
                    <groupId>org.elasticsearch</groupId>
                    <artifactId>elasticsearch</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.elasticsearch.client</groupId>
                    <artifactId>elasticsearch-rest-client</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-client</artifactId>
            <version>7.9.3</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>7.9.3</version>
        </dependency>

        <!-- elasticsearch 新版本官方sdk,版本号需与使用的es版本一致 -->
        <dependency>
            <groupId>co.elastic.clients</groupId>
            <artifactId>elasticsearch-java</artifactId>
            <version>7.17.0</version>
        </dependency>

2、初始化配置es操作类


import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ElasticSearchConfig {

    @Bean
    public RestHighLevelClient restHighLevelClient(){
 
        RestClientBuilder builder=RestClient.builder(
               // new HttpHost("116.204.80.158", 9200, "http"),
                new HttpHost("116.204.80.155", 9200, "http"));
        CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic", "123456"));
        builder.setHttpClientConfigCallback(f -> f.setDefaultCredentialsProvider(credentialsProvider));
        RestHighLevelClient client = new RestHighLevelClient( builder);
        return client;
    }
}

3、业务层引用

    @Qualifier("restHighLevelClient")
    @Autowired
    private RestHighLevelClient client;

    private static final String indexName = "test_nandao_index";

    private static final String tableName = "UserInfo";
    private static final String workTableName = "WorkInfo";
    private static final String schoolTableName = "SchoolInfo";
    private static final String UserWorkRelation = tableName+"_"+workTableName+"_relation";

二、核心伪代码

1、创建父子索引

@Override
    public boolean createIndex(String index) throws IOException {
        //创建json数

        XContentBuilder mapping = XContentFactory.jsonBuilder()
                .startObject()

                .startObject("properties")

                .startObject("content")
                .field("type","text")
                .endObject()

                .startObject("title")
                .field("type","text")
                .endObject()

                .startObject(tableName+"_"+workTableName+"_relation")
                .field("type","join")
                .startObject("relations")
               // .field("blog","comment")
                .field(tableName,workTableName)
                .endObject()
                .endObject()

                .endObject()

                .endObject();

        CreateIndexRequest request = new CreateIndexRequest(index)
                .settings(Settings.builder()
                        .put("number_of_shards", 2)
                        .put("number_of_replicas", 1)
                        .build())
                .mapping(mapping)
                ;

        //1.创建索引请求
      //  CreateIndexRequest request = new CreateIndexRequest(index);
        String string = request.aliases().toString();
        //2.客户端执行请求IndicesClient,请求后获得相应
        log.info("请求:{}", JSONObject.toJSONString(request));
        log.info("请求:{}",request.toString());
        CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
        log.info("返回:{}", JSON.toJSONString(response));
        return response.isAcknowledged();
    }

kibana查看

GET /nandao_parent_sub_index/_mapping

2、判断索引是否存在

   @Override
    public boolean isExit(String index) throws IOException {
        GetIndexRequest request = new GetIndexRequest(index);
        boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
        return exists;
    }

3、删除索引

    @Override
    public boolean delete(String index) throws IOException {
        DeleteIndexRequest request = new DeleteIndexRequest(index);
        AcknowledgedResponse delete = client.indices().delete(request, RequestOptions.DEFAULT);
        return delete.isAcknowledged();
    }

4、添加父文档

 @Override
    public boolean addDocument(String index, String id, Object object) throws IOException {
        IndexRequest request = new IndexRequest(index);
        //规则 一般的文档形如 put /index/_doc/1
        //request.id(id);//如果不设置id的话会自动分配id
        request.timeout("1s");//设置超时时间
        System.out.println("JSON.toJSONString(object):"+ JSON.toJSONString(object));
        //将我们的数据放入请求Json中
        JSONObject jsonObject = (JSONObject) JSONObject.toJSON(object);
        //添加join关联索引
        JSONObject relationObject = new JSONObject();
       // relationObject.put(tableName,workTableName);
        relationObject.put("name",tableName);
        jsonObject.put(UserWorkRelation,relationObject);
        request.source(JSON.toJSONString(jsonObject), XContentType.JSON);
        log.info("请求:{}", JSONObject.toJSONString(request));
        log.info("请求1:{}", JSON.toJSONString(request));
        log.info("请求2:{}", JSON.toJSONString(jsonObject));
        //客户端发送请求,获取相应的结果
        IndexResponse response = client.index(request, RequestOptions.DEFAULT);
        return response.getShardInfo().getSuccessful()>0?true:false;
    }

5、更新父文档

    @Override
    public boolean updateDocument(UserInfoVo user, String index, String id) throws IOException {
        UpdateRequest request = new UpdateRequest(index, id);
        request.timeout("1s");

        //将我们的数据放入请求Json中
        JSONObject jsonObject = (JSONObject) JSONObject.toJSON(user);
        //添加join关联索引
        JSONObject relationObject = new JSONObject();
        // relationObject.put(tableName,workTableName);
        relationObject.put("name",tableName);
        jsonObject.put(UserWorkRelation,relationObject);

        request.doc(JSON.toJSONString(jsonObject), XContentType.JSON);
        UpdateResponse update = client.update(request, RequestOptions.DEFAULT);
        return update.getShardInfo().getSuccessful()>0?true:false;
    }

6、添加子文档

    @Override
    public boolean addDocumentSub(String index, String parentId, Object object) throws IOException {
        IndexRequest request = new IndexRequest(index).routing(parentId);//设置索引和路由
        //规则 一般的文档形如 put /index/_doc/1
        //request.id(id);//如果不设置id的话会自动分配id
        request.timeout("1s");//设置超时时间
        System.out.println("JSON.toJSONString(object):"+ JSON.toJSONString(object));
        //将我们的数据放入请求Json中
        JSONObject jsonObject = (JSONObject) JSONObject.toJSON(object);
        //添加join关联索引
        JSONObject relationObject = new JSONObject();
        relationObject.put("name",workTableName);
        relationObject.put("parent",parentId);
        jsonObject.put(UserWorkRelation,relationObject);
        request.source(JSON.toJSONString(jsonObject), XContentType.JSON);
        log.info("请求:{}", JSONObject.toJSONString(request));
        log.info("请求1:{}", JSON.toJSONString(request));
        log.info("请求2:{}", JSON.toJSONString(jsonObject));
        //客户端发送请求,获取相应的结果
        IndexResponse response = client.index(request, RequestOptions.DEFAULT);
        return response.getShardInfo().getSuccessful()>0?true:false;
    }

创建普通文档  

    @Override
    public boolean createDocument(String index, Object object) throws IOException {
        IndexRequest request = new IndexRequest(index);
        //规则 一般的文档形如 put /index/_doc/1
       // request.id(id);//如果不设置id的话会自动分配id
        request.timeout("1s");//设置超时时间
        System.out.println("JSON.toJSONString(object):"+ JSON.toJSONString(object));
        //将我们的数据放入请求Json中
        request.source(JSON.toJSONString(object), XContentType.JSON);
        //客户端发送请求,获取相应的结果
        IndexResponse response = client.index(request, RequestOptions.DEFAULT);
        return response.getShardInfo().getSuccessful()>0?true:false;
    }

      7、判断是否是doc格式

    @Override
    public boolean isdocuexit(String index, String id) throws IOException {
        GetRequest getRequest = new GetRequest(index,id);
        //不获取返回的_source上下文
        getRequest.fetchSourceContext(new FetchSourceContext(false));
        getRequest.storedFields("_none_");
        return client.exists(getRequest, RequestOptions.DEFAULT);
    }

8、根据id和索引查询

    @Override
    public String getDoucumment(String index, String id) throws IOException {
        GetRequest getRequest = new GetRequest(index, id);
        GetResponse response = client.get(getRequest, RequestOptions.DEFAULT);
        return response.getSourceAsString();
    }

9、根据父id查询

    @Override
    public String getDoucummentByParentId(String index, TreeMap<String, Object> content,String parentId) throws IOException {
         
        SearchRequest searchRequest = new SearchRequest(index);
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
      
        ParentIdQueryBuilder build = JoinQueryBuilders.parentId("WorkInfo",parentId);
        sourceBuilder.query(build);
        //将查询条件放入需要查询中
        searchRequest.source(sourceBuilder);
        System.out.println("dsl===1==="+sourceBuilder.toString());

        //获取相应的数据
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        SearchHit[] hits = searchResponse.getHits().getHits();

       // SearchRequest searchRequest = new SearchRequest(index);
        searchResponse.getHits().forEach(hi ->{
            log.info("查询结果:{}",hi.getSourceAsString());
        });
        return hits.toString();
    }

对应DSL语句

POST /nandao_parent_sub_index/_search 
{
	"query": {
		"parent_id": {
			"type": "WorkInfo",
			"id": "tYTxYoUBJlO7GBNmNPml"
		}
	}
}

 

10、Has Child 查询,返回父文档

    @Override
    public String getDoucummentHasChild(String userName, String index) throws IOException {
        SearchRequest searchRequest = new SearchRequest(index);
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        HasChildQueryBuilder build = JoinQueryBuilders.hasChildQuery("WorkInfo",QueryBuilders.matchQuery("userName", "Jack"), ScoreMode.None);
        sourceBuilder.query(build);
        //将查询条件放入需要查询中
        searchRequest.source(sourceBuilder);
        System.out.println("dsl===1==="+sourceBuilder.toString());
        //获取相应的数据
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        SearchHit[] hits = searchResponse.getHits().getHits();
        searchResponse.getHits().forEach(hi ->{
            log.info("查询结果:{}",hi.getSourceAsString());
        });
        return hits.toString();
    }

对应DSL语句:

POST /nandao_parent_sub_index/_search
{
	"query": {
		"has_child": {
			"type": "WorkInfo",
			"query": {
				"match": {
					"userName": "Jack"
				}
			}
		}
	}
}

 11、Has parent 查询,返回子文档

    @Override
    public String getDoucummentHasParent(String userName, String index) throws IOException {
        SearchRequest searchRequest = new SearchRequest(index);
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        HasParentQueryBuilder build= JoinQueryBuilders.hasParentQuery("UserInfo", QueryBuilders.matchQuery("userName", "wangwu"), false);
        sourceBuilder.query(build);
        //将查询条件放入需要查询中
        searchRequest.source(sourceBuilder);
        System.out.println("dsl===1==="+sourceBuilder.toString());
        //获取相应的数据
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        SearchHit[] hits = searchResponse.getHits().getHits();
        searchResponse.getHits().forEach(hi ->{
            log.info("查询结果:{}",hi.getSourceAsString());
        });
        return hits.toString();
    }

对应DSL语句:

GET /nandao_parent_sub_index/_search
{
  "query": {
    "has_parent": {
      "parent_type": "UserInfo",
      "query": {
        "match": {
          "userName": "wangwu"
        }
      }
    }
  }
}

 12、通过索引查

   @Override
    public String getAllDoucummentByIndex(String index) throws IOException {
        SearchRequest searchRequest = new SearchRequest(index);
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        SearchHit[] hits = searchResponse.getHits().getHits();
        return hits.toString();
    }

13、通过索引和id删除文档

   @Override
    public boolean deleteDocument(String index, String id) throws IOException {
        DeleteRequest request = new DeleteRequest(index,id);
        request.timeout("1s");
        DeleteResponse deleteResponse = client.delete(request, RequestOptions.DEFAULT);
        return deleteResponse.getShardInfo().getSuccessful()>0?true:false;
    }

14、批量添加文档

    @Override
    public boolean addmoredocument(List<Object> list, String index, String id) throws IOException {
        BulkRequest bulkRequest = new BulkRequest();
        bulkRequest.timeout("1s");
        //批量处理请求
        for (int i=0;i<list.size();i++){
            bulkRequest.add(
                    new IndexRequest(index)
                            //.id(id)
                            .source(JSON.toJSONString(list.get(i)), XContentType.JSON));
        }
        BulkResponse responses = client.bulk(bulkRequest, RequestOptions.DEFAULT);
        //是否失败 false-没有失败
        return responses.hasFailures()?false:true;
    }

15、termQuery

    @Override
    public List<Map<String, Object>> termQuery(String index, TreeMap<String, Object> content, int size, int from, boolean ishigh) throws IOException {
        SearchRequest searchRequest = new SearchRequest(index);
        //构建查询条件
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        System.out.println(content.firstKey());
        //查询条件
        TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery(content.firstKey(),content.get(content.firstKey()));
        sourceBuilder.query(termQueryBuilder);
        sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
        //获取多少条数据
        sourceBuilder.size(size);
        //从第几行开始
        sourceBuilder.from(from);
        //是否要将查询的结果中将搜索的关键词高亮
        if (ishigh){
            HighlightBuilder highlightBuilder = new HighlightBuilder();
            //设置高亮的属性
            highlightBuilder.field(content.firstKey());
            //也可以自定义高亮的样式,这里我使用的是默认的方式
            sourceBuilder.highlighter(highlightBuilder);
        }
        System.out.println("dsl===1==="+sourceBuilder.toString());
        //将查询条件放入需要查询中
        searchRequest.source(sourceBuilder);
        //获取相应的数据
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        SearchHit[] hits = searchResponse.getHits().getHits();

        ArrayList<Map<String, Object>> result = new ArrayList<>();
        for (SearchHit searchHit:hits){
            Map<String, HighlightField> highlightFields = searchHit.getHighlightFields();
            //获取高亮的信息
            HighlightField property = highlightFields.get(content.firstKey());
            //查询的元素数据(没有高亮)
            Map<String, Object> sourceAsMap = searchHit.getSourceAsMap();
            if (ishigh){
                if (property!=null){
                    Text[] fragments = property.fragments();
                    String n_title = "";
                    for (Text text:fragments){
                        n_title += text;
                    }
                    sourceAsMap.put(content.firstKey(),n_title);
                }
            }
            result.add(sourceAsMap);
        }
        System.out.println("result==1===:"+result);
        return result;
    }

16、matchQuery

@Override
    public List<Map<String, Object>> matchQuery(String index, TreeMap<String, Object> content, int size, int from, boolean ishigh) throws IOException {
        SearchRequest searchRequest = new SearchRequest(index);
        //构建查询条件
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        //查询条件
        MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery(content.firstKey(),content.get(content.firstKey()));

        sourceBuilder.query(matchQueryBuilder);
        sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
        //获取多少条数据
        sourceBuilder.size(size);
        //从第几行开始
        sourceBuilder.from(from);
        //是否要高亮
        if (ishigh){
            HighlightBuilder highlightBuilder = new HighlightBuilder();
            //设置高亮的属性
            highlightBuilder.field(content.firstKey());
            //也可以自定义高亮的样式,这里我使用的是默认的方式
            sourceBuilder.highlighter(highlightBuilder);
        }

        System.out.println("dsl===2==="+sourceBuilder.toString());

        //将查询条件放入需要查询中
        searchRequest.source(sourceBuilder);
        //获取相应的数据
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        SearchHit[] hits = searchResponse.getHits().getHits();

        ArrayList<Map<String, Object>> result = new ArrayList<>();
        for (SearchHit searchHit:hits){
            Map<String, HighlightField> highlightFields = searchHit.getHighlightFields();
            //获取高亮的信息
            HighlightField property = highlightFields.get(content.firstKey());
            //查询的元素数据(没有高亮)
            Map<String, Object> sourceAsMap = searchHit.getSourceAsMap();
            System.out.println("sourceAsMap===2==="+sourceAsMap);
            if (ishigh){
                if (property!=null){
                    Text[] fragments = property.fragments();
                    String n_title = "";
                    for (Text text:fragments){
                        n_title += text;
                    }
                    sourceAsMap.put(content.firstKey(),n_title);
                }
            }
            result.add(sourceAsMap);
        }
        System.out.println("result==2===:"+result);

        return result;
    }

17、boolmustQuery

@Override
    public List<Map<String, Object>> boolmustQuery(String index, TreeMap<String, Object> content, int size, int from, boolean ishigh) throws IOException {
        SearchRequest searchRequest = new SearchRequest(index);
        //构建查询条件
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        //查询条件
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
        Set keys = content.keySet();
        for (Object key:keys){
            //将要查询的条件加入
            boolQueryBuilder.must(QueryBuilders.termQuery((String) key,content.get(key)));
        }
        sourceBuilder.query(boolQueryBuilder);
        sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
        //获取多少条数据
        sourceBuilder.size(size);
        //从第几行开始
        sourceBuilder.from(from);

        System.out.println("dsl===3==="+sourceBuilder.toString());
        //将查询条件放入需要查询中
        searchRequest.source(sourceBuilder);
        //获取相应的数据
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        SearchHit[] hits = searchResponse.getHits().getHits();
        ArrayList<Map<String, Object>> result = new ArrayList<>();
        for (SearchHit searchHit:hits){
            Map<String, HighlightField> highlightFields = searchHit.getHighlightFields();
            //获取高亮的信息
            HighlightField property = highlightFields.get(content.firstKey());
            //查询的元素数据(没有高亮)
            Map<String, Object> sourceAsMap = searchHit.getSourceAsMap();
            System.out.println("sourceAsMap===2==="+sourceAsMap);
            if (ishigh){
                if (property!=null){
                    Text[] fragments = property.fragments();
                    String n_title = "";
                    for (Text text:fragments){
                        n_title += text;
                    }
                    sourceAsMap.put(content.firstKey(),n_title);
                }
            }
            result.add(sourceAsMap);
        }

        System.out.println("result==3===:"+result);
        return result;
    }

到此关联关系处理基本分享完毕,同时也可以参考这篇文章:

es父子查询处理

下篇我们分析es的理论与架构组成敬请期待!文章来源地址https://www.toymoban.com/news/detail-690248.html

到了这里,关于RestHighLevelClient实现ElasticSearch关联查询之父子文档的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如果elasticsearch要实现在大于两个索引之间关联查询怎么实现

    Elasticsearch可以通过多种方式在多个索引之间进行关联查询。 一种常用的方法是使用关联查询(join query), 这需要在索引和类型中使用 _join 字段来存储关联关系。 另一种方法是使用查询时连接(query time join),使用过滤器上下文来连接不同索引中的文档。 还可以使用 Elasticsearch 的聚

    2024年02月08日
    浏览(64)
  • SpringBoot+Elasticsearch使用resthighlevelclient对象删除指定的文档数据

    使用客户端删除 在 Kibana 中,你可以使用 Dev Tools 或者 Console 来执行 Elasticsearch 查询和删除操作。 ​ 以下是一个使用 Dev Tools 执行删除文档的示例: ​ 1.打开 Kibana,转到左侧导航栏的 “Dev Tools” 或者 “Console”。 ​ 2.在 Dev Tools 或者 Console 中输入如下删除请求: 请替换 /

    2024年01月23日
    浏览(49)
  • SpringBoot+Elasticsearch使用resthighlevelclient对象查询条件为“且+或”

    查询年龄为15或者16或者17或者18的且班级为1班的学生信息 首先,确保您的项目中包含了 Elasticsearch 的依赖: 然后,您可以创建一个包含查询逻辑的服务类。假设您有一个名为 StudentService 的服务类: 在上述代码中,您需要替换 your_index_name 为实际的 Elasticsearch 索引名称,并根

    2024年01月25日
    浏览(47)
  • Elasticsearch学习-父子文档

    elasticsearch父子文档处理 join 一、背景 二、需求 三、前置知识 四、实现步骤 1、创建 mapping 2、添加父文档数据 3、添加子文档 4、查询文档 1、根据父文档id查询它下方的子文档 2、has_child返回满足条件的父文档 3、has_parent返回满足父文档的子文档 五、Nested Object 和 join 对比 六

    2024年02月06日
    浏览(39)
  • ElasticSearch第五讲 ES nested嵌套文档与父子文档处理

    在ES中,处理实体之间的关系并不像关系型存储那样明显。在关系数据库中的黄金准则 - 数据规范化,在ES中并不适用。在处理关联关系,嵌套对象和父子关联关系中,我们会讨论几种可行方案的优点和缺点。 紧接着在为可扩展性而设计中,我们会讨论ES提供的一些用来快速灵

    2024年02月02日
    浏览(44)
  • elasticsearch 父子文档使用must not 正确姿势

    1、基于elasticsearch 父子文档进行子条件查询父文档 2、需要查询出子文档不存在的父文档 1、父文档clue_list 关联很多的子文档,我们用roam子文档做测试! 2、roam子文档的结构 需求是查询出roam子文档不存在的数据,由于我们es的所有数据companyId == 1 我们可以用must not来排除 co

    2024年02月05日
    浏览(44)
  • 记录el-select+el-tree复选框,支持模糊查询,懒加载,树父子节点不关联,不全选

    需求:一个机构下拉菜单,一个人员下拉菜单,默认带入当前登录用户的机构和人员。机构下拉菜单为两个接口,模糊查询为一个接口不包含懒加载,默认非模糊查询情况下为一个接口,点击节点懒加载。机构下拉菜单数据变动更新人员下拉菜单数据。日期默认为当天

    2024年01月15日
    浏览(43)
  • 【ElasticSearch】JavaRestClient实现文档查询、排序、分页、高亮

    先初始化JavaRestClient对象: 代码和DSL对应上就是: 运行结果: 然后是对结果的解析,对照响应结果: 示例代码: 运行结果: 总结: 构建DSL是通过HighLevelRestClient中的resource()方法来实现的,这里包含了查询、排序、分页、高亮等操作 构建查询条件的核心部分,即查询类型,

    2024年02月14日
    浏览(47)
  • SpringBoot整合RestHighLevelClient实现查询操作

    😊 @ 作者: 一恍过去 💖 @ 主页: https://blog.csdn.net/zhuocailing3390 🎊 @ 社区: Java技术栈交流 🎉 @ 主题: SpringBoot整合RestHighLevelClient实现查询操作 ⏱️ @ 创作时间: 2022年08月14日 为了方便查询操作,创建索引叫做: nba ,并且添加数据,http请求如下: 结果: term 查询被用于

    2024年02月04日
    浏览(45)
  • Elasticsearch之join关联查询

    目录 一、join总述 1、关系类比 2、使用限制 3、性能问题 二、Mapping 1、举例说明  2、mapping释义 三、插入数据 1、插入父文档 2、插入子文档 四、关联查询 1、has_parent查询(父查子) 3、has_child查询(子查父) 目录 一、join总述 1、关系类比 2、使用限制 3、性能问题 二、Mapp

    2024年02月03日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包