当前位置 : 主页 > 编程语言 > java >

java 操作 es 多条件检索 测试返回条数默认是 10

来源:互联网 收集:自由互联 发布时间:2023-09-06
Java操作ES多条件检索测试返回条数默认是10 概述 本文将向你介绍如何使用Java操作Elasticsearch(ES)实现多条件检索,并设置返回条数默认为10。ES是一个开源的搜索引擎,被广泛应用于全

Java操作ES多条件检索测试返回条数默认是10

概述

本文将向你介绍如何使用Java操作Elasticsearch(ES)实现多条件检索,并设置返回条数默认为10。ES是一个开源的搜索引擎,被广泛应用于全文搜索、日志分析、数据可视化等场景。

流程图

下面是实现该功能的整体流程图:

erDiagram
    开始 --> 连接ES
    连接ES --> 创建索引
    创建索引 --> 插入数据
    插入数据 --> 构建查询条件
    构建查询条件 --> 执行查询
    执行查询 --> 解析结果
    解析结果 --> 关闭连接
    关闭连接 --> 结束

步骤详解

1. 连接ES

首先,我们需要连接到Elasticsearch服务器。可以使用Java的TransportClient库来实现连接。

import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;

public class ESClient {

    public static TransportClient getClient() {
        // 设置集群名称
        Settings settings = Settings.builder().put("cluster.name", "my-es-cluster").build();
        // 创建客户端
        TransportClient client = new PreBuiltTransportClient(settings)
                .addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"), 9300));
        return client;
    }
}

在上述代码中,我们通过设置集群名称和连接地址来创建TransportClient对象。

2. 创建索引

在进行数据检索前,我们需要先创建一个索引,用于存储和管理数据。

import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
import org.elasticsearch.client.transport.TransportClient;

public class ESIndex {

    public static void createIndex(TransportClient client, String indexName, String typeName) {
        // 创建索引请求
        CreateIndexRequest request = new CreateIndexRequest(indexName);
        // 设置索引的类型
        request.mapping(typeName, "{ \"properties\": { \"field1\": { \"type\": \"text\" } } }");
        // 发送请求
        CreateIndexResponse response = client.admin().indices().create(request).actionGet();
        // 判断索引是否创建成功
        if (response.isAcknowledged()) {
            System.out.println("Index created successfully!");
        } else {
            System.out.println("Failed to create index!");
        }
    }
}

在上述代码中,我们使用CreateIndexRequest对象设置索引名称和类型,并通过mapping方法定义字段的类型。然后,我们发送创建索引的请求,并根据响应结果判断是否创建成功。

3. 插入数据

在创建索引后,我们需要插入一些数据供检索。

import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.client.transport.TransportClient;

public class ESData {

    public static void insertData(TransportClient client, String indexName, String typeName) {
        // 创建批量插入请求
        BulkRequestBuilder request = client.prepareBulk();
        // 添加插入操作
        request.add(client.prepareIndex(indexName, typeName).setSource("field1", "value1"));
        request.add(client.prepareIndex(indexName, typeName).setSource("field1", "value2"));
        // 执行批量插入请求
        BulkResponse response = request.get();
        // 判断是否插入成功
        if (response.hasFailures()) {
            System.out.println("Failed to insert data!");
        } else {
            System.out.println("Data inserted successfully!");
        }
    }
}

在上述代码中,我们使用BulkRequestBuilder对象来批量插入数据。通过prepareIndex方法设置索引名称、类型和数据源,然后添加到请求中。最后,我们执行请求并判断是否插入成功。

4. 构建查询条件

在执行查询前,我们需要根据需要构建查询条件。

import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;

public class ESQuery {

    public static void executeQuery(TransportClient client, String indexName, String typeName) {
        // 创建查询请求
        SearchRequestBuilder request = client.prepareSearch(indexName);
        // 设置查询类型
        request.setTypes(typeName);
        // 构建查询条件
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        sourceBuilder.query(QueryBuilders.matchQuery("field1", "value1"));
        sourceBuilder.size(10); // 设置返回
上一篇:java 遍历枚举
下一篇:没有了
网友评论