Heim > Java > javaLernprogramm > Hauptteil

Wie man mit Java eine Volltextsuchanwendung auf Basis von Elasticsearch entwickelt

WBOY
Freigeben: 2023-09-21 13:33:11
Original
898 Leute haben es durchsucht

Wie man mit Java eine Volltextsuchanwendung auf Basis von Elasticsearch entwickelt

Wie man mit Java eine Volltextsuchanwendung auf Basis von Elasticsearch entwickelt

Die Volltextsuche ist im heutigen Informationszeitalter eine sehr wichtige Technologie. Sie kann schnell und genau nach Schlüsselwörtern suchen, die von Benutzern in großen Mengen benötigt werden Textdaten oder verwandte Informationen. Als verteilte Open-Source-Suchmaschine wird Elasticsearch aufgrund seiner effizienten Volltextabfragefunktionen, Echtzeit-Datenanalyse und Skalierbarkeit häufig eingesetzt. In diesem Artikel wird erläutert, wie Sie mithilfe von Java eine auf Elasticsearch basierende Volltextsuchanwendung entwickeln, und es werden spezifische Codebeispiele bereitgestellt.

  1. Vorbereitungsarbeiten
    Bevor wir mit der Entwicklung beginnen, müssen wir die folgenden Arbeiten vorbereiten:
  2. Installieren Sie die Java-Entwicklungsumgebung (JDK)
  3. Installieren Sie den Elasticsearch-Server und starten Sie den Dienst
  4. Importieren Sie beispielsweise die Elasticsearch-Java-Clientbibliothek Verwenden Sie Maven. Importieren Sie die folgenden Abhängigkeiten:
<dependencies>
  <dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>7.10.0</version>
  </dependency>
</dependencies>
Nach dem Login kopieren
  1. Elasticsearch-Client erstellen
    Zuerst müssen wir einen Client für die Verbindung zum Elasticsearch-Server erstellen. Eine Client-Instanz kann mit dem folgenden Code erstellt werden:
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;
    }
}
Nach dem Login kopieren
  1. Index erstellen
    Als nächstes müssen wir einen Index (Index) erstellen, um unsere Dokumentdaten zu speichern. Indizes ähneln Tabellen in einer Datenbank, und wir können verschiedene Arten von Dokumentdaten in unterschiedlichen Indizes speichern. Mit dem folgenden Code kann ein Index erstellt werden:
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();
        }
    }
}
Nach dem Login kopieren
  1. Dokumente indizieren
    Wenn der Index vorhanden ist, können wir die Dokumentdaten im Index speichern. Ein Dokument ähnelt einem Datensatz in einer Datenbank. Wir können mehrere Dokumente unter demselben Index speichern. Sie können den folgenden Code verwenden, um Dokumentdaten im Index zu speichern:
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();
        }
    }
}
Nach dem Login kopieren
  1. Nach Dokumenten suchen
    Mit dem Dokumentindex können wir durch Volltextabfrage nach Dokumenten suchen, die Schlüsselwörter enthalten. Sie können den folgenden Code verwenden, um eine Dokumentensuche durchzuführen:
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();
        }
    }
}
Nach dem Login kopieren

Mit dem obigen Codebeispiel können wir die Entwicklung einer auf Elasticsearch basierenden Volltext-Retrieval-Anwendung abschließen. Durch die Erstellung eines Index, die Indizierung von Dokumenten und die Suche nach Dokumenten können wir eine effiziente und genaue Volltextsuche erreichen. Zusätzlich zu den oben gezeigten Grundfunktionen unterstützt Elasticsearch natürlich auch verschiedene erweiterte Abfragen, aggregierte Analysen, verteilte Bereitstellung und andere Funktionen und kann je nach spezifischem Bedarf weiterentwickelt und erweitert werden. Ich hoffe, dass dieser Artikel für Sie hilfreich ist, und wünsche Ihnen viel Erfolg auf dem Gebiet der Volltextrecherche!

Das obige ist der detaillierte Inhalt vonWie man mit Java eine Volltextsuchanwendung auf Basis von Elasticsearch entwickelt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!