O Elasticsearch é basicamente invencível na pesquisa de texto completo e também é muito bem-sucedido em big data. Pode ser usado como NOSQL (ou originalmente NOSQL).
Este artigo apresenta brevemente a Spring Boot para usar o idioma Kotlin para se conectar ao Elasticsearch. No entanto, não darei uma introdução detalhada. Se você quiser ter uma compreensão mais profunda do uso do Elasticsearch em Java/Kotlin, consulte o "Elasticsearch Java API Manual" que escrevi antes de https://gitee.com/quanke/elticsearch-java/ contém exemplos de uso, incluindo as cibeiras com as cifra.
Se você não entende o Elasticsearch, primeiro compreenda e instale o serviço Elasticsearch
Existem muitas maneiras de se conectar ao Elasticsearch
Deve -se notar que, se o Spring Data Elasticsearch for usado, a versão Spring Boot 1.5 ++ não suportará a versão mais recente do Elasticsearch.
Abaixo estão as versões correspondentes do Spring Data Elasticsearch e 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 |
A versão ElasticSearch que estamos usando é 5.5.6, e a versão da Spring Boot é 1.5.6 e suporta o Elasticsearch 5.0 ou superior. Spring Data Elasticsearch não é a versão de liberação. Usamos o cliente Java Elasticsearch. No entanto, a recomendação oficial é uma maneira melhor. Você pode se referir ao "Elasticsearch Java REST API Manual".
Construindo projetos de Kotlin de bota de primavera
Se você tiver problemas para criar o projeto, pode consultar meu artigo anterior "Criando uma API RESTfull com a bota de primavera e Kotlin"
Construa com Gradle, adicione o arquivo Build.gradle
Dependências {compile "org.elticsearch: Elasticsearch: $ Elasticsearch_version" Compile "org.elticsearch.client: transporte: $ elasticsearch_version"}FILE COMPLETO Build.gradle
Grupo 'Name.quanke.kotlin'version' 1.0-SNAPSHOT'BuildScript {Ext.Kotlin_Version = '1.2.10' Ext.spring_boot_version = '1.5.4.release' ext.springfox_swagger2_version = '2.7.0' Ext.mysq_version '1.1.1' Ext.ELASTICSECH_VERSION = '5.5.1' Ext.Fastjson_Version = '1.2.7' Repositórios {MAVENCENTRAL ()} Dependências {ClassPath "Org.Jetbrains.Kotlin: Kotlin-gradle-Pplugin: $ Kotlin_Version" ClassPath ("Org.springframework.boot: Spring-Boot-Gradle-Plugin: $ spring_boot_version") // Kotlin integra o construtor sem parâmetros sem parâmetros do Springboot e define todas as classes por padrão de classe aberta: "Org.Jetbrains.Kotlin: Kotlin-Nargin: classpath("org.jetbrains.kotlin:kotlin-allopen:$kotlin_version") }}apply plugin: 'kotlin'apply plugin: "kotlin-spring" // See https://kotlinlang.org/docs/reference/compiler-plugins.html#kotlin-spring-compiler-pluginapply plugin: 'org.springframework.boot'apply plugin: "kotlin-jpa" //https://stackoverflow.com/questions/32038177/kotlin-with-jpa-default-constructor-helljar {Basename =' Capítulo11-6-8-SERVICE 'versão MAVENCENTral ()} dependências {compile "org.Jetbrains.kotlin: Kotlin-stdlib-jre8: $ kotlin_version" compile ("org.jetbrains.kotlin: kotlin-reflect: $ {kotlin_version}) Compile "org.springframework.boot:spring-boot-starter-web:$spring_boot_version" compile "org.elasticsearch:elasticsearch:$elasticsearch_version" compile "org.elasticsearch.client:transport:$elasticsearch_version" compile "com.alibaba:fastjson:$fastjson_version" compile "org.apache.commons: Commons-Lang3: 3.6" testCompile "org.springframework.boot: Spring-boot-starter-test: $ spring_boot_version" testCompile "orjat.Jetbrains.kotlin: kotlin-junit: $ kotlin_version "1.8"} CompilEtestkotlin {KotLinOptions.jvmtarget = "1.8"}Escreva a classe base de teste Elasticsearchclient primeiro
import com.alibaba.fastjson.JSONimport com.alibaba.fastjson.serializer.SerializerFeatureimport org.elasticsearch.action.search.SearchResponseimport org.elasticsearch.client.transport.TransportClientimport org.elasticsearch.common.settings.Settingsimport org.elasticsearch.common.transport.inetsockettransportAddressImport org.elasticsearch.Transport.Client.PrebuiltTransportClientImport org.junit.afterimport org.junit.beimport java.nnet.IntReddRest/** ** ** inicialização do slast.Junit.beimport java.net.net.IntReddressTeriMication. O cluster que solicita ES é um fator externo para o cluster. * Criado por http://quanke.name em 2017/11/10. */classe aberta elasticsearchClient {protegido Var Client: TransportClient? = NULL @Before @THOWS (Exception :: Class) FUN STEPUP () {VAL Essettings = Settings.builder () .put ("cluster.name", "utan-es") // Defina o nome do esustivo. /*** O método de conexão aqui refere-se ao fato de que o plug-in x-pack não está instalado. Se o X-Pack estiver instalado, consulte [ElasticsearchXpackClient]* 1. O método do cliente Java deve se comunicar na porta 9300 usando o protocolo TCP* 2. O método do cliente HTTP é comunicar no porta 9200 usando o protocolo HTTP*/ client = pré-construção de esportes (Asttings) .AddTransportAddress (INetSocketTransportAddress (inetaddress.getByName ("192.168.1.10"), 9300)) println ("ElasticsearchClient Connection é bem -sucedido")} @after @throws (excepction :: classe) rushdown) println (pesquisa -resposta: pesquisa -resposta) {val searchhits = searchResponse.hits.hits for (searchhit em searchhits) {println (json.tojSonstring (searchhit.source, serializerfeature.prettyformat)}}}}}}}}}}}}}}}}}}}Executar testes de unidade
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.SpringRunner/** * Created by http://quanke.name em 2018/1/9. */@Runwith (springrunner :: classe) @springboottestclass ApplicationTests: ElasticsearchClient () {@test Fun `es test" `() {val qb = matchAllQuery () Val Response = client !!. Preparesearch (" Twitter) // pode ser múltiplo. condicionas.get () println (resposta)}}Escrevemos um Dayu-Spring-Boot-Starter-ES e temos a oportunidade de abrir o código-fonte.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.