Elasticsearch est fondamentalement invincible dans la recherche en texte intégral, et elle est également très réussie dans les mégadonnées. Il peut être utilisé comme NoSQL (ou à l'origine NoSQL).
Cet article présente brièvement Spring Boot pour utiliser le langage Kotlin pour se connecter à Elasticsearch. Cependant, je ne donnerai pas une introduction détaillée. Si vous voulez avoir une compréhension plus approfondie de l'utilisation de Elasticsearch dans Java / Kotlin, veuillez vous référer au "Elasticsearch Java API Manual" J'ai écrit avant https://gitee.com/quanke/elasticsearch-java/ contient des exemples d'usage, y compris les Pitfulls avec lesquels nous nous utilisons lorsque nous l'utilisons.
Si vous ne comprenez pas du tout Elasticsearch, veuillez d'abord comprendre et installer le service Elasticsearch
Il existe de nombreuses façons de se connecter à Elasticsearch
Il convient de noter que si Spring Data Elasticsearch est utilisé, la version Spring Boot 1.5 ++ ne prend pas en charge la dernière version d'Elasticsearch.
Vous trouverez ci-dessous les versions correspondantes de Spring Data Elasticsearch et Elasticsearch
| Spring Data Elasticsearch | Elasticsearch |
|---|---|
| 3.0.0.rc2 | 5.5.0 |
| 3.0.0.m4 | 5.4.0 |
| 2.0.4.release | 2.4.0 |
| 2.0.0.release | 2.2.0 |
| 1.4.0.m1 | 1.7.3 |
| 1.3.0.release | 1.5.2 |
| 1.2.0.release | 1.4.4 |
| 1.1.0.release | 1.3.2 |
| 1.0.0.release | 1.1.1 |
La version Elasticsearch que nous utilisons est 5.5.6, et la version de démarrage de Spring est 1.5.6 et prend en charge Elasticsearch 5.0 ou supérieur. Spring Data Elasticsearch n'est pas la version de version. Nous utilisons le client Java Elasticsearch. Cependant, la recommandation officielle est une meilleure façon. Vous pouvez vous référer au "Elasticsearch Java REST API Manual" J'ai écrit https://gitee.com/quanke/elasticsearch-java-rest, mais cet article utilise toujours le client Java Elasticsearch.
Construire des projets de Kotlin de démarrage de printemps
Si vous avez des problèmes de construction du projet, vous pouvez vous référer à mon article précédent "Création d'une API RESTFULL avec Spring Boot et Kotlin"
Build avec gradle, ajouter le fichier build.gradle
Dépendances {compile "org.ellasticsearch: elasticsearch: $ elasticsearch_version" compile "org.ellasticsearch.client: transport: $ elasticsearch_version"}Fichier complet de build.gradle
Groupe 'name.quanke.kotlin'version' 1.0-snapshot'buildscript {ext.kotlin_version = '1.2.10' ext. '1.1.1' ext.ellasticsearch_version = '5.5.1' ext.fastjson_version = '1.2.7' Repositaires {mavencentral ()} Dependances {ClassPath "org.jetbrains.kotlin: Kotlin-Gradle-Plugin: $ kotlin_version" ClassPath ("org.springframework.boot: printemps-boot-gradle-plugin: $ printemps_boot_version") // kotlin intègre le constructeur par défaut sans paramètre de Springboot, et définit toutes les classes par défaut de plugin de classe ouverte (org.jetbrains.kotlin: kotlin-noarg: $ kotlin_version ") CLASSPATH ("org.Jetbrains.kotlin: Kotlin-Allopen: $ Kotlin_version")}} Appliquer Plugin: 'Kotlin'Apply Plugin: "Kotlin-spring" // voir https://kotlinlang.org/docs/reference/combinplugins.htmlin Plugin: 'org.springframework.boot'Apply Plugin: "Kotlin-jpa" //https://stackoverflow.com/questions/32038177/kotlin-with-jpa-default-constructor-helljar {basename =' Chapter11-6-8-service 'version =' 0.1.0 '} repositienes {repositienes}} RepOSIERIES {Rawey Mavencentral ()} dépendances {compile "org.Jetbrains.kotlin: kotlin-stdlib-jre8: $ kotlin_version" compile ("org.jetbrains.kotlin: kotlin-reflect: $ {kotlin_version}") Compile "org.springframework.boot: printemps-boot-starter-web: $ printemps_boot_version" compiler "org.ellasticsearch: elasticsearch: $ elasticsearch_version" compile "org.ellasticsearch.client: transport: $ elasticsarch_version" compile "com.alibaba:fastjson:$fastJSO "org.apache.commons: Commons-Lang3: 3.6" testcompile "org.springframework.boot: printemps-boot-starter-test: $ printemps_boot_version" TestCompile "org.Jetbrains.kotlin: kotlin-test-junit: $ kotlin_version"} compilkotlin {kostlin "1.8"} Compiletestkotlin {kotlinoptions.jvmtarget = "1.8"}Écrivez d'abord la classe de base de base ElasticSearchClient
import com.alibaba.fastjson.jsonimport com.alibaba.fastjson.serializer.serializerfeatumport org.elasticsearch.action.search.searchresponseimpport org.ellasticsearch.client.transport.transportclientimport org.elasticsarch.Common.settings.setting org.ellasticsearch.common.transport.inetsockettransportaddressIMport org.ellasticsearch.transport.client.prebuilttransportclientImport org.junit.afterimport org.junit.beforeImport java.net.intaddress / ** * Initialisation d'Elastearch 5.5.1 Visiteur, le cluster demandant ES est un facteur externe pour le cluster. * Créé par http://quanke.name le 2017/11/10. * / Open classe ElasticSearchClient {Protected Var Client: TransportClient? = null @before @throws (exception :: class) fun setup () {val Essettings = sefitS.builder () .put ("cluster.name", "utan-es") // Définit le nom de l'es instance. / ** * La méthode de connexion ici fait référence au fait que le plug-in X-Pack n'est pas installé. Si X-Pack est installé, reportez-vous à [elasticsearchxpackClient] * 1. La méthode du client Java doit communiquer sur le port 9300 en utilisant le protocole TCP * 2. La méthode du client HTTP consiste à communiquer sur le port 9200 en utilisant le protocole HTTP * / client = prébuilttransportClient (Essettings) .AddTransportAddress (InetsocketTransportAddress (inetAddress.getByName ("192.168.1.10"), 9300)) println ("ElasticSearchClient Connection est réussi")} @after @throws (exception :: class) Fun Telersdown () {if (client! = Null) {client !!. println (searchResponse: searchResponse) {val searchhits = searchResponse.hits.hits for (searchhit dans searchhits) {println (json.tojssentring (searchhit.source, serializerfeture.prettyformat))}}}Exécuter des tests unitaires
import org.elasticsearch.index.query.QueryBuilders.MatchallQueryImport org.Junit.Testimport Org.Junit.Runner.RunwithImport Org.SpringFramework.Boot.Test.Context.SpringBootTestimport Org.SpringFramework.Test.Context.Junit4 http://quanke.name le 2018/1/9. * / @ Runwith (springrunner :: class) @springboottestclass applicationtestss: elasticsearchClient () {@test fun `es test" `() {val qb = mattallQuery () valon réponse = client !! condition.get () println (réponse)}}Nous avons écrit un Dayu-Spring-Boot-Starter-ES, et nous avons la possibilité de l'ouvrir.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.