Java를 사용하여 Elasticsearch 기반의 전체 텍스트 검색 응용 프로그램을 개발하는 방법
전체 텍스트 검색은 오늘날의 정보화 시대에 많은 양의 사용자가 요구하는 키워드를 빠르고 정확하게 검색할 수 있는 매우 중요한 기술입니다. 텍스트 데이터 또는 관련 정보. 오픈 소스 분산 검색 엔진인 Elasticsearch는 효율적인 전체 텍스트 검색 기능, 실시간 데이터 분석 및 확장성으로 인해 널리 사용되었습니다. 이 기사에서는 Java를 사용하여 Elasticsearch 기반의 전체 텍스트 검색 애플리케이션을 개발하는 방법을 소개하고 구체적인 코드 예제를 제공합니다.
<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(); } } }
위의 코드 예제를 사용하여 Elasticsearch 기반의 전체 텍스트 검색 애플리케이션 개발을 완료할 수 있습니다. 색인 생성, 문서 색인화 및 문서 검색을 통해 효율적이고 정확한 전체 텍스트 검색을 달성할 수 있습니다. 물론, Elasticsearch는 위에 표시된 기본 기능 외에도 다양한 고급 쿼리, 집계 분석, 분산 배포 및 기타 기능도 지원하며 특정 요구에 따라 추가로 개발 및 확장될 수 있습니다. 이 기사가 여러분에게 도움이 되기를 바라며, 전체 텍스트 검색 분야에서 여러분의 더 큰 성공을 기원합니다!
위 내용은 Java를 사용하여 Elasticsearch 기반의 전체 텍스트 검색 애플리케이션을 개발하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!