亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

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

2024-07-13 10:17:25
字體:
來源:轉載
供稿:網友

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

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

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

有多種方式連接Elasticsearch

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

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

下面是spring data elasticsearch 和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

 

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

構建Spring Boot Kotlin 項目

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

使用 Gradle 構建,在 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的默認無參構造函數,默認把所有的類設置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-pluginapply 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'}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.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.Beforeimport 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") //設置ES實例的名稱    .put("client.transport.sniff", true) //自動嗅探整個集群的狀態,把集群中其他ES節點的ip添加到本地的客戶端列表中    .build()  /**   * 這里的連接方式指的是沒有安裝x-pack插件,如果安裝了x-pack則參考 [ElasticsearchXPackClient]   * 1. java客戶端的方式是以tcp協議在9300端口上進行通信   * 2. http客戶端的方式是以http協議在9200端口上進行通信   */  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.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 on 2018/1/9. */@RunWith(SpringRunner::class)@SpringBootTestclass 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 ,有機會開源出來

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
两个人的视频www国产精品| 亚洲在线观看视频网站| 全亚洲最色的网站在线观看| 欧美黄色www| 亚洲精品国精品久久99热一| 亚洲精品第一国产综合精品| 国产精品视频不卡| 亚州国产精品久久久| 亚洲精品久久久一区二区三区| 日韩成人性视频| 欧美在线性视频| 欧美黄色三级网站| 91中文在线观看| 日韩免费在线电影| 国产精品白嫩初高中害羞小美女| 在线视频欧美性高潮| 永久免费精品影视网站| 亚洲精品一区中文字幕乱码| 亚洲老头老太hd| 96pao国产成视频永久免费| 日韩毛片在线看| 国产97在线|亚洲| 久久久久久久91| 亚洲欧美日韩一区二区在线| 久久韩国免费视频| 亚洲在线www| 日韩欧美在线第一页| 久久九九热免费视频| 亚洲美女av黄| 日韩久久精品电影| 国产成人精品免高潮在线观看| 久久久亚洲网站| 久久69精品久久久久久久电影好| 国产精品一区二区久久久久| 亚洲欧美日韩中文视频| 91久久精品在线| 久久久久久久亚洲精品| 精品视频www| 欧美电影电视剧在线观看| 97超碰国产精品女人人人爽| 欧美日韩国产一区二区| 国产精品视频公开费视频| 国产精品老牛影院在线观看| 欧美日韩成人在线观看| 欧美人在线视频| 在线播放日韩专区| 超碰精品一区二区三区乱码| 欧美激情一二三| 亚洲品质视频自拍网| 欧美精品在线免费播放| 国产精品成人免费电影| 欧美成人免费视频| 久久99国产精品自在自在app| 亚洲男人天堂手机在线| 欧美成人免费大片| 91超碰caoporn97人人| 伊人伊成久久人综合网小说| 疯狂做受xxxx高潮欧美日本| 欧美一区二区色| 欧美有码在线观看| 国产精品video| 最近中文字幕2019免费| 日韩在线观看视频免费| 一区二区三区无码高清视频| 国产成人亚洲综合91| 91久久久亚洲精品| 欧美最猛性xxxxx亚洲精品| 伊人av综合网| 日本中文字幕不卡免费| 91精品国产自产在线观看永久| 成人网欧美在线视频| 久久久久久久久久国产| 国产精品夜色7777狼人| 国产日产亚洲精品| 美女久久久久久久| 亚洲第一精品电影| 亚洲第一免费网站| 久久久国产91| 色偷偷av一区二区三区| 日韩最新在线视频| 国产精品白嫩美女在线观看| 欧美日韩国产一中文字不卡| 色综合伊人色综合网站| 国产精品video| 中文在线资源观看视频网站免费不卡| 久久好看免费视频| 中文字幕九色91在线| 精品性高朝久久久久久久| 国产精品中文字幕久久久| 欧美精品www在线观看| 国产精品视频内| 狠狠久久五月精品中文字幕| 欧美精品日韩三级| 国产精品www色诱视频| 国产在线视频一区| 成人免费高清完整版在线观看| 欧美一级高清免费| 九九久久精品一区| 久久精品国产亚洲一区二区| 国产精品视频白浆免费视频| 日韩中文理论片| 97在线看免费观看视频在线观看| 亚洲人成亚洲人成在线观看| 国产在线不卡精品| 欧美自拍视频在线观看| 久热在线中文字幕色999舞| 久热精品在线视频| 91在线视频九色| 夜夜嗨av一区二区三区免费区| 精品久久久久国产| 国产精品精品久久久| 91美女片黄在线观| 国产视频在线观看一区二区| 日韩激情av在线免费观看| 中文字幕日韩精品有码视频| 欧美极品美女视频网站在线观看免费| 国产成人综合一区二区三区| 国产精品麻豆va在线播放| 97在线观看免费| 在线观看国产精品日韩av| 在线电影中文日韩| 欧美日韩一二三四五区| 欧美激情一二三| 欧美性高潮在线| 欧美日韩国产一中文字不卡| 91影院在线免费观看视频| 欧美一级大片视频| 亚洲精品国产精品国自产观看浪潮| 亚洲精品黄网在线观看| 欧美视频在线免费| 欧美激情高清视频| 亚洲精品色婷婷福利天堂| 色综合天天综合网国产成人网| 91亚洲精华国产精华| 国产日韩欧美自拍| 精品亚洲一区二区三区四区五区| 欧美日韩国产丝袜另类| 欧美激情视频网站| 亚洲第一中文字幕在线观看| 日韩一二三在线视频播| 136fldh精品导航福利| 成人在线精品视频| 亚洲r级在线观看| 国产一区二区在线免费| 国产成人一区二区三区| 日韩黄色高清视频| 久久久久久久网站| 欧美最顶级丰满的aⅴ艳星| 136fldh精品导航福利| 色综合久久中文字幕综合网小说| 国产视频精品va久久久久久| 欧美与黑人午夜性猛交久久久| 日本成人黄色片| 国产精品白嫩美女在线观看| 日韩在线观看高清| 国产在线精品自拍| 久热在线中文字幕色999舞| 国产精品扒开腿做爽爽爽视频| 久久久久久午夜| 亚洲色图国产精品| 精品动漫一区二区| 91在线免费观看网站| 欧美日韩一区二区三区| 97福利一区二区|