项目实训记录-es测试

Elasticsearch在Java中的应用与测试

在现代软件开发中,Elasticsearch作为一个强大的搜索引擎,已经被广泛应用于各种数据存储和检索场景。本文将通过一个具体的测试代码,展示如何在Java项目中集成和使用Elasticsearch,并通过JUnit进行测试验证。

核心功能实现

我们将实现以下几个功能:

  1. 将案件信息添加到Elasticsearch索引中。
  2. 从本地资源目录中读取文件名。
  3. 将案件信息的嵌入向量存储到Elasticsearch中。
  4. 使用嵌入向量进行案件搜索。

以下是核心代码实现:

案件添加功能
@Test
public void addCaseTest() throws IOException {
    Case aCase = new Case();
    aCase.setCaseId("123");
    IndexResponse cases = client.index(i -> i.index("cases").id(aCase.getCaseId()).document(aCase));
    System.out.println(cases);
}
读取资源文件名
@Test
public void getFileNamesFromResource() {
    URL resource = ResourceUtil.getResource("legal_data/wenshu/dev");
    System.out.println(wenShuUtil.getWenShuFileNameByPath(resource.getPath()));
}
存储案件嵌入向量
@Test
public void addCaseEmbeddingTest() throws IOException {
    URL resource = ResourceUtil.getResource("legal_data/wenshu/dev");
    List<String> names = wenShuUtil.getWenShuFileNameByPath(resource.getPath());
    names = names.subList(1, 20);
    for (String s : names) {
        List<Case> cases = wenShuUtil.parseCases(s);
        embeddingService.saveCasesEmbedding(cases);
    }
}
案件嵌入向量搜索
@Test
public void searchCaseEmbeddingTest() {
    Response<Embedding> response = embeddingService.embed("我设计的产品被其他人侵权使用");
    String indexName = NameEnums.generateEmbeddingIndexName(NameEnums.CASE_RECORD_NAME.toString(), NameEnums.DEFAULT_EMBEDDING_MODEL.toString());
    EmbeddingStore<TextSegment> store = factory.createEmbeddingStore(NameEnums.CASE_RECORD_NAME.toString(), NameEnums.DEFAULT_EMBEDDING_MODEL.toString(), NameEnums.ELASTIC_SEARCH_STORE.toString());
    List<EmbeddingMatch<TextSegment>> relevant = store.findRelevant(response.content(), 8, 0);
    for (EmbeddingMatch<TextSegment> emb : relevant) {
        System.out.println(emb);
    }
}
结论

本文集成Elasticsearch,使用JUnit进行功能测试。这些代码不仅实现了基本的CRUD操作,还展示了如何结合嵌入向量进行复杂的文本搜索。希望通过这些示例代码,能帮助开发者更好地理解和使用Elasticsearch。

进一步的工作可以包括:

  1. 优化嵌入向量的生成和存储流程。
  2. 增加更多的测试用例,覆盖更多的业务场景。
  3. 实现更加复杂的查询和分析功能。

通过不断优化和扩展,我们的系统将变得更加智能和高效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值