Cara menggunakan Java untuk membangunkan aplikasi perolehan teks penuh berdasarkan Elasticsearch
Pendapatan semula teks penuh adalah teknologi yang sangat penting pada masa kini zaman maklumat. Ia boleh mencari kata kunci atau maklumat berkaitan dengan cepat dan tepat yang diperlukan oleh pengguna daripada sejumlah besar data teks. Sebagai enjin carian teragih sumber terbuka, Elasticsearch telah digunakan secara meluas untuk keupayaan mendapatkan teks penuh yang cekap, analisis data masa nyata dan kebolehskalaan. Artikel ini akan memperkenalkan cara menggunakan Java untuk membangunkan aplikasi carian teks penuh berdasarkan Elasticsearch, dan memberikan contoh kod khusus.
<dependencies> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>7.10.0</version> </dependency> </dependencies>
import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestClientBuilder; import org.elasticsearch.client.RestHighLevelClient; public class ElasticsearchClient { public static RestHighLevelClient createClient() { // 配置Elasticsearch服务器地址 RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200, "http")); // 创建高级客户端实例 RestHighLevelClient client = new RestHighLevelClient(builder); return client; } }
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest; import org.elasticsearch.action.admin.indices.create.CreateIndexResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.common.xcontent.XContentFactory.*; public class IndexCreator { public static void createIndex(String indexName) { try { RestHighLevelClient client = ElasticsearchClient.createClient(); // 创建索引请求 CreateIndexRequest request = new CreateIndexRequest(indexName); // 设置索引的映射规则 XContentBuilder mappingBuilder = XContentFactory.jsonBuilder(); mappingBuilder.startObject(); mappingBuilder.startObject("properties"); mappingBuilder.startObject("title"); mappingBuilder.field("type", "text"); mappingBuilder.endObject(); mappingBuilder.startObject("content"); mappingBuilder.field("type", "text"); mappingBuilder.endObject(); mappingBuilder.endObject(); mappingBuilder.endObject(); request.mapping(mappingBuilder); // 执行创建索引请求 CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT); // 处理响应结果 if (response.isAcknowledged()) { System.out.println("索引创建成功:" + indexName); } else { System.out.println("索引创建失败:" + indexName); } // 关闭客户端连接 client.close(); } catch (Exception e) { e.printStackTrace(); } } }
import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.common.xcontent.XContentType; public class DocumentIndexer { public static void indexDocument(String indexName, String documentId, String title, String content) { try { RestHighLevelClient client = ElasticsearchClient.createClient(); // 创建文档索引请求 IndexRequest request = new IndexRequest(indexName); request.id(documentId); request.source("title", title); request.source("content", content); // 执行文档索引请求 IndexResponse response = client.index(request, RequestOptions.DEFAULT); // 处理响应结果 if (response.status().getStatus() == 201) { System.out.println("文档索引成功:" + documentId); } else { System.out.println("文档索引失败:" + documentId); } // 关闭客户端连接 client.close(); } catch (Exception e) { e.printStackTrace(); } } }
import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.QueryBuilders.*; import org.elasticsearch.search.builder.SearchSourceBuilder; public class DocumentSearcher { public static void searchDocument(String indexName, String keyword) { try { RestHighLevelClient client = ElasticsearchClient.createClient(); // 创建搜索请求 SearchRequest request = new SearchRequest(indexName); SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.query(QueryBuilders.matchQuery("content", keyword)); request.source(sourceBuilder); // 执行搜索请求 SearchResponse response = client.search(request, RequestOptions.DEFAULT); // 处理响应结果 if (response.getHits().getTotalHits().value > 0) { System.out.println("搜索结果:"); for (SearchHit hit : response.getHits().getHits()) { System.out.println(hit.getSourceAsString()); } } else { System.out.println("未找到相关文档"); } // 关闭客户端连接 client.close(); } catch (Exception e) { e.printStackTrace(); } } }
Atas ialah kandungan terperinci Cara menggunakan Java untuk membangunkan aplikasi carian teks penuh berdasarkan Elasticsearch. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!