[elasticsearch 实现插入查询小demo ]

目录

前言:  

 。以下是Java语言实现Elasticsearch数据插入和批量插入的示例代码:

我们需要定义一个ElasticsearchUtil类来封装Elasticsearch操作。在本示例中,我们实现了以下方法:

下面是一个Java代码示例,演示了如何使用Elasticsearch实现数据插入和批量插入:

依赖:

elasticsearch 实现高亮查询操作:

我们需要定义一个ElasticsearchUtil类来封装Elasticsearch操作。在本示例中,我们实现了以下方法:

下面是一个Java代码示例,演示了如何使用Elasticsearch实现高亮查询:


前言:  

     Elasticsearch是一个分布式的全文搜索和分析引擎,支持实时数据插入和批量插入

 。以下是Java语言实现Elasticsearch数据插入和批量插入的示例代码:

  1. 首先,我们需要使用Java Elasticsearch客户端库来连接Elasticsearch集群。在本示例中,我们使用Elasticsearch Java High Level REST Client库来连接Elasticsearch集群。

  2. 我们需要定义一个ElasticsearchIndex类来管理Elasticsearch索引。在本示例中,我们使用一个名为"test_index"的索引来进行数据插入和批量插入操作。

public class ElasticsearchIndex {
    public static final String INDEX_NAME = "test_index";
}
 

我们需要定义一个ElasticsearchUtil类来封装Elasticsearch操作。在本示例中,我们实现了以下方法:

  • insert:使用Elasticsearch Java High Level REST Client库的Index API插入单条数据。
  • bulkInsert:使用Elasticsearch Java High Level REST Client库的Bulk API批量插入数据。
public class ElasticsearchUtil {
    private static final RestHighLevelClient client = new RestHighLevelClient(
            RestClient.builder(new HttpHost("localhost", 9200, "http")));

    public static void insert(String id, String json) throws IOException {
        IndexRequest request = new IndexRequest(ElasticsearchIndex.INDEX_NAME);
        request.id(id);
        request.source(json, XContentType.JSON);
        client.index(request, RequestOptions.DEFAULT);
    }

    public static void bulkInsert(List<String> jsonList) throws IOException {
        BulkRequest request = new BulkRequest();
        for (String json : jsonList) {
            IndexRequest indexRequest = new IndexRequest(ElasticsearchIndex.INDEX_NAME);
            indexRequest.source(json, XContentType.JSON);
            request.add(indexRequest);
        }
        client.bulk(request, RequestOptions.DEFAULT);
    }
}
  • 我们可以在Java应用程序中调用ElasticsearchUtil类中的方法来实现Elasticsearch数据插入和批量插入功能。例如,当需要插入单条数据时,我们可以调用insert方法,并传递数据的ID和JSON格式的数据。当需要批量插入数据时,我们可以调用bulkInsert方法,并传递一个包含多条JSON格式数据的列表。

下面是一个Java代码示例,演示了如何使用Elasticsearch实现数据插入和批量插入:

public class Main {
    public static void main(String[] args) throws IOException {
        // 插入单条数据
        String id = "1";
        String json = "{\"name\":\"John\", \"age\":30}";
        ElasticsearchUtil.insert(id, json);

        // 批量插入数据
        List<String> jsonList = new ArrayList<>();
        jsonList.add("{\"name\":\"John\", \"age\":30}");
        jsonList.add("{\"name\":\"Mary\", \"age\":25}");
        ElasticsearchUtil.bulkInsert(jsonList);
    }
}

依赖:

<dependency> 2 <groupId>org.elasticsearch.client</groupId> 3 <artifactId>elasticsearch-rest-high-level-client</artifactId> 4 <version>7.14.0</version> 5</dependency>

这个示例中,我们演示了如何使用Elasticsearch Java High Level REST Client库实现数据插入和批量插入。需要注意的是,使用Elasticsearch需要在Elasticsearch服务器端启用集群模式,并配置好集群节点。在Java客户端中,需要指定至少一个集群节点的IP地址和端口号,客户端会自动发现其他节点并进行集群操作。


elasticsearch 实现高亮查询操作:

Elasticsearch支持高亮查询操作,可以将查询结果中匹配的关键词标记出来,方便用户快速定位到关键信息。以下是Java语言实现Elasticsearch高亮查询操作的示例代码:

  • 首先,我们需要使用Java Elasticsearch客户端库来连接Elasticsearch集群。在本示例中,我们使用Elasticsearch Java High Level REST Client库来连接Elasticsearch集群。

  • 我们需要定义一个ElasticsearchIndex类来管理Elasticsearch索引。在本示例中,我们使用一个名为"test_index"的索引来进行查询操作。

public class ElasticsearchIndex {
    public static final String INDEX_NAME = "test_index";
}
 

我们需要定义一个ElasticsearchUtil类来封装Elasticsearch操作。在本示例中,我们实现了以下方法:

  • search:使用Elasticsearch Java High Level REST Client库的Search API进行查询操作,并返回高亮结果。

public class ElasticsearchUtil {
    private static final RestHighLevelClient client = new RestHighLevelClient(
            RestClient.builder(new HttpHost("localhost", 9200, "http")));

    public static SearchResponse search(String keyword) throws IOException {
        SearchRequest request = new SearchRequest(ElasticsearchIndex.INDEX_NAME);
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        sourceBuilder.query(QueryBuilders.matchQuery("content", keyword));
        HighlightBuilder highlightBuilder = new HighlightBuilder();
        highlightBuilder.field("content");
        highlightBuilder.preTags("<em>");
        highlightBuilder.postTags("</em>");
        sourceBuilder.highlighter(highlightBuilder);
        request.source(sourceBuilder);
        return client.search(request, RequestOptions.DEFAULT);
    }
}
 

我们可以在Java应用程序中调用ElasticsearchUtil类中的方法来实现Elasticsearch高亮查询功能。例如,当需要查询包含指定关键词的文档时,我们可以调用search方法,并传递关键词。查询结果中匹配的关键词会被标记为<em>和</em>。

下面是一个Java代码示例,演示了如何使用Elasticsearch实现高亮查询:

public class Main {
    public static void main(String[] args) throws IOException {
        String keyword = "Elasticsearch";
        SearchResponse response = ElasticsearchUtil.search(keyword);
        for (SearchHit hit : response.getHits().getHits()) {
            String content = hit.getSourceAsMap().get("content").toString();
            String highlight = hit.getHighlightFields().get("content").fragments()[0].toString();
            System.out.println("匹配文本:" + content);
            System.out.println("高亮文本:" + highlight);
        }
    }
}

这个示例中,我们演示了如何使用Elasticsearch Java High Level REST Client库实现高亮查询。需要注意的是,使用Elasticsearch需要在Elasticsearch服务器端启用集群模式,并配置好集群节点, 一些小的细节需要注意好 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是汤圆丫

怎么 给1分?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值