Maison  >  Article  >  Java  >  Utiliser Elasticsearch pour la recherche de données dans le développement d'API Java

Utiliser Elasticsearch pour la recherche de données dans le développement d'API Java

王林
王林original
2023-06-18 18:46:401709parcourir

Avec le développement rapide de la technologie Internet, l'échelle et la complexité des applications modernes augmentent, et ces applications impliquent généralement une grande quantité de recherche et d'analyse de données. Afin de résoudre ces problèmes, de plus en plus de développeurs commencent à utiliser des moteurs de recherche en texte intégral pour les aider à traiter des données massives.

Dans cet article, nous présenterons comment utiliser Elasticsearch pour la recherche de données, et pour l'application dans le processus de développement de l'API Java, nous présenterons l'interface API fournie par Elasticsearch, ainsi que le processus et les techniques de mise en œuvre.

  1. Introduction à Elasticsearch

Elasticsearch est un moteur de recherche en texte intégral open source construit sur la bibliothèque de recherche de texte du moteur de recherche Apache Lucene. Elasticsearch présente les caractéristiques d'une recherche et d'une analyse distribuées, à haute disponibilité et en temps réel. Il peut rapidement stocker, récupérer et analyser de grandes quantités de données. Dans les scénarios de recherche de données, Elasticsearch est une solution très populaire et largement utilisée car elle fournit une interface API puissante et facile à utiliser qui peut être rapidement intégrée aux applications Java.

  1. Concepts de base d'Elasticsearch

Lorsque vous utilisez Elasticsearch pour la recherche de données, certains concepts et termes de base doivent être compris :

(1) Index

Dans Elasticsearch, l'index est un conteneur logique utilisé pour stocker data , qui est similaire à une table dans une base de données relationnelle. Chaque index peut contenir plusieurs documents, et chaque document est une structure de données au format JSON.

(2) Type

Dans Elasticsearch, chaque index peut contenir plusieurs types (types), et chaque type peut définir ses propres champs. Les types sont obsolètes dans les versions récentes d'Elasticsearch, mais sont toujours utilisés comme sélecteurs dans certaines API.

(3) Sharding et répliques

Dans Elasticsearch, un index peut être divisé en plusieurs fragments (fragments), et chaque fragment est un index Lucene indépendant. Sharding distribue et stocke les données indexées sur plusieurs serveurs pour réaliser un stockage et des requêtes distribués. De plus, Elasticsearch prend également en charge les réplicas. Chaque partition peut avoir plusieurs répliques pour améliorer les performances de recherche et la disponibilité des données.

(4) Nœuds et clusters

Elasticsearch est un moteur de recherche distribué qui peut s'exécuter sur plusieurs nœuds. Un nœud est une instance Elasticsearch unique et l'ensemble du cluster est composé de plusieurs nœuds. Les nœuds peuvent communiquer entre eux et travailler ensemble pour effectuer des tâches de recherche.

  1. API Java Elasticsearch

Elasticsearch fournit une interface API Java riche qui peut être facilement intégrée aux applications Java. Les développeurs Java peuvent utiliser les API suivantes pour l'indexation, l'interrogation et la gestion des données :

(1) API Index

L'API Index est utilisée pour indexer des documents au format JSON dans l'index Elasticsearch spécifié. Il prend en charge l'indexation par lots, qui peut indexer plusieurs documents dans le même index à la fois.

(2) API de recherche

L'API de recherche est utilisée pour effectuer des opérations de recherche. Elle prend en charge diverses méthodes de recherche, notamment la recherche en texte intégral, la recherche par champ, la recherche floue, etc.

(3) API de suppression

L'API de suppression est utilisée pour supprimer l'index Elasticsearch spécifié.

(4) Get API

Get API est utilisée pour obtenir des documents en fonction de l'index, du type et de l'ID spécifiés.

(5)API de mise à jour

L'API de mise à jour est utilisée pour mettre à jour le document spécifié.

De plus, Elasticsearch fournit également de nombreuses autres interfaces API, notamment la recherche de localisation géographique, la surbrillance de texte, l'agrégation, etc.

  1. Utilisez Elasticsearch pour la recherche de données

Avant d'utiliser Elasticsearch pour la recherche de données, vous devez installer Elasticsearch et le démarrer. Utilisez ensuite l'API Java pour vous connecter au serveur Elasticsearch, créez l'index et ajoutez des données à l'index. Ensuite, vous pouvez effectuer une recherche à l'aide de l'API de recherche. Voici un exemple de code Java de base :

import java.net.InetAddress;

import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.TransportAddress;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.transport.client.PreBuiltTransportClient;

public class ElasticsearchSearchDemo {

    public static void main(String[] args)
            throws Exception {

        // 设置集群名称
        Settings settings = Settings.builder().put("cluster.name", "elasticsearch").build();

        // 创建客户端
        TransportClient client = new PreBuiltTransportClient(settings)
                .addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"), 9300));

        // 搜索数据
        SearchResponse response = client.prepareSearch("books")
                .setQuery(QueryBuilders.matchQuery("title", "Java"))
                .get();

        // 打印结果
        for (SearchHit hit : response.getHits().getHits()) {
            System.out.println(hit.getSourceAsString());
        }

        // 关闭客户端
        client.close();
    }

}

Le code ci-dessus crée un objet TransportClient, se connecte au service Elasticsearch local et utilise la méthode prepareSearch pour effectuer des opérations de requête. Cette opération de requête effectue une recherche floue sur le champ de titre de l'index des livres et génère les résultats de la recherche.

  1. Résumé

À l’ère actuelle des données, la demande de recherche et d’analyse de données augmente. En tant que puissant moteur de recherche en texte intégral, Elasticsearch présente les avantages de la distribution, de la haute disponibilité, de la recherche et de l'analyse en temps réel. Dans le scénario de développement d'API Java, Elasticsearch fournit des interfaces API riches et faciles à utiliser, offrant aux développeurs des fonctionnalités pratiques de recherche de données. J'espère que cet article pourra aider les développeurs Java à mieux utiliser Elasticsearch pour la recherche de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn