欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

SpringBoot與Kotlin整合全文搜索引擎Elasticsearch的示例代碼

Elasticsearch 在全文搜索里面基本是無敵的,在大數(shù)據(jù)里面也很有建樹,完全可以當(dāng)NOSQL(本來也是nosql)使用。

公主嶺網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,公主嶺網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為公主嶺上千多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的公主嶺做網(wǎng)站的公司定做!

這篇文章簡單介紹Spring Boot使用Kotlin語言連接操作 Elasticsearch。但是不會做很詳細(xì)的介紹,如果要深入了解Elasticsearch在Java/kotlin中的使用,請參考我之前編寫的《Elasticsearch Java API 手冊》 https://gitee.com/quanke/elasticsearch-java/ 里面包含使用實例,包含我們使用踩過的坑。

如果完全不了解Elasticsearch請先了解,安裝好Elasticsearch服務(wù)

有多種方式連接Elasticsearch

  1. Spring Data Elasticsearch
  2. elasticsearch Java client
  3. 其他第三方庫

需要注意的是,如果使用Spring Data Elasticsearch,spring boot 1.5++版本的不支持最新版本的elasticsearch。

下面是spring data elasticsearch 和elasticsearch對應(yīng)的版本

spring data elasticsearchelasticsearch
3.0.0.RC25.5.0
3.0.0.M45.4.0
2.0.4.RELEASE2.4.0
2.0.0.RELEASE2.2.0
1.4.0.M11.7.3
1.3.0.RELEASE1.5.2
1.2.0.RELEASE1.4.4
1.1.0.RELEASE1.3.2
1.0.0.RELEASE1.1.1

我們使用的 Elasticsearch 版本是 5.5.6 , spring boot 使用的版本是 1.5.6 而且支持 Elasticsearch6.0 以上的版本的 spring data elasticsearch 還不是 RELEASE 版本,所有我們采用的是 elasticsearch Java client 的方式,但是現(xiàn)在官方推薦更好的方式可以參考我寫的《Elasticsearch Java Rest API 手冊》 https://gitee.com/quanke/elasticsearch-java-rest ,但是這篇文章還是使用 elasticsearch Java client

構(gòu)建Spring Boot Kotlin 項目

如果構(gòu)建項目有問題的您,可以參考我之前的文章《使用Spring Boot和Kotlin創(chuàng)建RESTfull API》

使用 Gradle 構(gòu)建,在 build.gradle 文件中添加

dependencies {
 compile "org.elasticsearch:elasticsearch:$elasticsearch_version"
 compile "org.elasticsearch.client:transport:$elasticsearch_version"
}

完整的 build.gradle 文件

group '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.MySQL_version = '5.1.21'
 ext.mybatis_version = '1.1.1'
 ext.elasticsearch_version = '5.5.1'
 ext.fastjson_version = '1.2.7'
 repositories {
  mavenCentral()
 }
 dependencies {
  classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
  classpath("org.springframework.boot:spring-boot-gradle-plugin:$spring_boot_version")

//  Kotlin整合SpringBoot的默認(rèn)無參構(gòu)造函數(shù),默認(rèn)把所有的類設(shè)置open類插件
  classpath("org.jetbrains.kotlin:kotlin-noarg:$kotlin_version")
  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-plugin
apply plugin: 'org.springframework.boot'
apply plugin: "kotlin-jpa" //https://stackoverflow.com/questions/32038177/kotlin-with-jpa-default-constructor-hell
jar {
 baseName = 'chapter11-6-8-service'
 version = '0.1.0'
}
repositories {
 mavenCentral()
}

dependencies {
 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 "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"

}

compileKotlin {
 kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
 kotlinOptions.jvmTarget = "1.8"
}

先寫測試基類 ElasticsearchClient

import com.alibaba.fastjson.JSON
import com.alibaba.fastjson.serializer.SerializerFeature
import org.elasticsearch.action.search.SearchResponse
import org.elasticsearch.client.transport.TransportClient
import org.elasticsearch.common.settings.Settings
import org.elasticsearch.common.transport.InetSocketTransportAddress
import org.elasticsearch.transport.client.PreBuiltTransportClient
import org.junit.After
import org.junit.Before
import java.net.InetAddress

/**
 * Elasticsearch 5.5.1 的client 和 ElasticsearchTemplate的初始化
 * 作為一個外部訪問者,請求ES的集群,對于集群而言,它是一個外部因素。
 * Created by http://quanke.name on 2017/11/10.
 */
open class ElasticsearchClient {

 protected var client: TransportClient? = null
 @Before
 @Throws(Exception::class)
 fun setUp() {
  val esSettings = Settings.builder()
    .put("cluster.name", "utan-es") //設(shè)置ES實例的名稱
    .put("client.transport.sniff", true) //自動嗅探整個集群的狀態(tài),把集群中其他ES節(jié)點的ip添加到本地的客戶端列表中
    .build()

  /**
   * 這里的連接方式指的是沒有安裝x-pack插件,如果安裝了x-pack則參考 [ElasticsearchXPackClient]
   * 1. java客戶端的方式是以tcp協(xié)議在9300端口上進(jìn)行通信
   * 2. http客戶端的方式是以http協(xié)議在9200端口上進(jìn)行通信
   */
  client = PreBuiltTransportClient(esSettings)
    .addTransportAddress(InetSocketTransportAddress(InetAddress.getByName("192.168.1.10"), 9300))

  println("ElasticsearchClient 連接成功")
 }

 @After
 @Throws(Exception::class)
 fun tearDown() {
  if (client != null) {
   client!!.close()
  }

 }

 protected fun println(searchResponse: SearchResponse) {
  val searchHits = searchResponse.hits.hits
  for (searchHit in searchHits) {
   println(JSON.toJSONString(searchHit.source, SerializerFeature.PrettyFormat))
  }
 }
}

運行單元測試

import org.elasticsearch.index.query.QueryBuilders.matchAllQuery
import org.junit.Test
import org.junit.runner.RunWith
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.test.context.junit4.SpringRunner
/**
 * Created by http://quanke.name on 2018/1/9.
 */
@RunWith(SpringRunner::class)
@SpringBootTest
class ApplicationTests : ElasticsearchClient() {

 @Test
 fun `es test"`() {
  val qb = matchAllQuery()
  val response = client!!.prepareSearch("twitter")//可以是多個index
    .setTypes("tweet")//可以是多個類型
    .setQuery(qb) // Query 查詢條件
    .get()
  println(response)
 }
}

我們寫了一個 dayu-spring-boot-starter-es ,有機(jī)會開源出來

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

本文名稱:SpringBoot與Kotlin整合全文搜索引擎Elasticsearch的示例代碼
網(wǎng)頁URL:http://aaarwkj.com/article10/gjoigo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、商城網(wǎng)站網(wǎng)站內(nèi)鏈、網(wǎng)站改版、App設(shè)計、App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
国产精品夫妇在线激情啪| 人人澡人人看人人妻| 黄色av手机在线观看| 国产毛毛片一区二区三区| 日韩一区二区三级电影| 人妻天天爽夜夜爽欧美色| 成人性生交大片免费看中文 | 国产精品一区二区三区熟女| 国产黄色自拍av网站| 男人自拍天堂在线视频| 午夜激情视频免费国产| 97久久精品人妻一区二区三区| 国产亚洲一区二区三区乱码| 亚洲第一国产综合自拍| 香蕉视频欧美久久精品| 午夜在线免费观看小视频| 91欧美精品一区二区| 人妻天天爽夜夜爽欧美色| 熟女aaa一区二区午夜| 精品视频在线观看传媒| 日吊视频在线免费观看| 91亚色在线免费观看| 中文字幕精品人妻丝袜| 日本一区二区在线高清| 性知音国产精品粉色视频| 亚洲一区二区精品偷拍| 欧美亚洲另类日韩综合网| 日本五十路亲子在线一区| 亚洲精品二区在线播放| 日韩高清视频 一区二区| av在线免费播放观看| 精品成人18亚洲av播放| 麻豆国产自拍在线视频| 国产在线视频不卡一线路| 日本中文有码在线观看| 国产免费av一区二区在线观看| 午夜在线观看视频免费| 日韩中文字幕在线乱码| 亚洲免费一区二区三区精品| 国产在线不卡免费精品| 日韩一区二区三区不卡|