Elasticsearch นั้นมักจะอยู่ยงคงกระพันในการค้นหาข้อความแบบเต็มและยังประสบความสำเร็จอย่างมากในข้อมูลขนาดใหญ่ มันสามารถใช้เป็น NOSQL (หรือเดิม NOSQL)
บทความนี้แนะนำ Spring Boot สั้น ๆ เพื่อใช้ภาษา Kotlin เพื่อเชื่อมต่อกับ Elasticsearch อย่างไรก็ตามฉันจะไม่ให้คำแนะนำโดยละเอียด หากคุณต้องการมีความเข้าใจอย่างลึกซึ้งเกี่ยวกับการใช้ Elasticsearch ใน Java/Kotlin โปรดดู "คู่มือ Java API" Elasticsearch "ฉันเขียนก่อน https://gitee.com/quanke/ElasticSearch-java/ มีตัวอย่างการใช้งานรวมถึงข้อผิดพลาด
หากคุณไม่เข้าใจ Elasticsearch เลยโปรดเข้าใจและติดตั้ง Elasticsearch Service ก่อน
มีหลายวิธีในการเชื่อมต่อกับ Elasticsearch
ควรสังเกตว่าหากใช้ข้อมูลสปริง ElasticSearch เวอร์ชัน Spring Boot 1.5 ++ ไม่รองรับ Elasticsearch เวอร์ชันล่าสุด
ด้านล่างนี้เป็นเวอร์ชันที่สอดคล้องกันของข้อมูลฤดูใบไม้ผลิ Elasticsearch และ Elasticsearch
| ข้อมูลฤดูใบไม้ผลิ ElasticSearch | Elasticsearch |
|---|---|
| 3.0.0.rc2 | 5.5.0 |
| 3.0.0.m4 | 5.4.0 |
| 2.0.4. รีลีส | 2.4.0 |
| 2.0.0.release | 2.2.0 |
| 1.4.0.m1 | 1.7.3 |
| 1.3.0 รีลีส | 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 และเวอร์ชันการบูตฤดูใบไม้ผลิคือ 1.5.6 และรองรับ Elasticsearch 5.0 หรือสูงกว่า Spring Data Elasticsearch ไม่ใช่เวอร์ชันรุ่น เราใช้ไคลเอนต์ Java Elasticsearch อย่างไรก็ตามคำแนะนำอย่างเป็นทางการเป็นวิธีที่ดีกว่า คุณสามารถอ้างถึง "Elasticsearch Java REST API MANUAL" ฉันเขียน https://gitee.com/quanke/elasticsearch-java-rest แต่บทความนี้ยังคงใช้ลูกค้า Elasticsearch Java
การสร้างโครงการ Spring Boot Kotlin
หากคุณมีปัญหาในการสร้างโครงการคุณสามารถอ้างถึงบทความก่อนหน้าของฉัน "การสร้าง RESTFOLL API ด้วย Spring Boot และ Kotlin"
สร้างด้วย Gradle เพิ่มในไฟล์ build.gradle
การพึ่งพา {Compile "org.elasticsearch: Elasticsearch: $ elasticsearch_version" Compile "org.elasticsearch.client: การขนส่ง: $ 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 '1.1.1' ext.elasticsearch_version = '5.5.1' ext.fastjson_version = '1.2.7' ที่เก็บ {mavencentral ()} การพึ่งพา {classpath "org.jetbrains.kotlin: kotlin-gradle-plugin: $ kotlin_version" classpath ("org.springframework.boot: Spring-boot-gradle-plugin: $ spring_boot_version") // Kotlin รวมตัวสร้างพารามิเตอร์เริ่มต้นของ Springboot และตั้งค่าคลาสทั้งหมดโดยเริ่มต้นคลาส classpath ("org.jetbrains.kotlin: kotlin-allopen: $ kotlin_version")}} ใช้ปลั๊กอิน: 'kotlin'apply plugin: "kotlin-spring" // ดู https://kotlinlang.org/docs/reference/compiler-plugins.htmlut-plugins.org 'org.springframework.boot'apply ปลั๊กอิน: "kotlin-jpa" //https://stackoverflow.com/questions/32038177/kotlin-with-jpa-default-constructor-helljar {basename =' mavencentral ()} การพึ่งพา {compile "org.jetbrains.kotlin: kotlin-stdlib-jre8: $ kotlin_version" คอมไพล์ ("org.jetbrains.kotlin: kotlin-reflect: $ {kotlin_version}") "org.springframework.boot: Spring-Boot-Starter-Web: $ spring_boot_version" Compile "org.elasticsearch: Elasticsearch: $ elasticsearch_version" Compile "org.elasticsearch.client: การขนส่ง: "org.apache.Commons: Commons-lang3: 3.6" TestCompile "org.springframework.boot: การทดสอบสปริง-สตาร์เทสต์: $ spring_boot_version" testcompile "org.jetbrains.kotlin: kotlin-test-junit: $ kotlin_version "1.8"} CompileTestKotlin {kotlinoptions.jvmtarget = "1.8"}เขียนชั้นฐานทดสอบ ElasticsearchClient ก่อน
นำเข้า com.alibaba.fastjson.jsonimport com.alibaba.fastjson.serializer.serializerfeatureimport org.elasticsearch.action.search.searchresponseimport org.elasticsearch.transport.transportimportientimport org.elasticsearch.common.transport.inetsockettransportaddressimport org.elasticsearch.transport.client.prebuilttransportlientimport org.junit.afterimport org.junit.builtransport ผู้เยี่ยมชมคลัสเตอร์ที่ขอ ES เป็นปัจจัยภายนอกสำหรับคลัสเตอร์ * สร้างโดย http://quanke.name เมื่อ 2017/11/10 */Open Class ElasticSearchClient {Protected VAR Client: TransportClient? = null @Before @throws (ข้อยกเว้น :: คลาส) การตั้งค่าความสนุก () {val Essettings = settings.builder () .put ("cluster.name", "utan-es") // ตั้งชื่อของอินสแตนซ์ es ("client.transport.sniff" /*** วิธีการเชื่อมต่อที่นี่หมายถึงความจริงที่ว่าปลั๊กอิน X-Pack ไม่ได้ติดตั้ง หากติดตั้ง X-Pack โปรดดูที่ [ElasticSearchxPackClient]* 1. วิธีไคลเอนต์ Java คือการสื่อสารบนพอร์ต 9300 โดยใช้โปรโตคอล TCP* 2. วิธีไคลเอนต์ HTTP คือการสื่อสารบนพอร์ต 9200 โดยใช้โปรโตคอล HTTP .AddTransportaddress (InetSocketTransportaddress (Inetaddress.getByName ("192.168.1.10"), 9300)) println ("การเชื่อมต่อ elasticsearchclient ประสบความสำเร็จ")} @after @throws println (searchResponse: searchResponse) {val searchhits = searchResponse.hits.hits สำหรับ (searchhit ใน searchhits) {println (json.tojsonstring (searchhit.source, serializerfeature.prettyformat))}}}}}}}}}}}}}}}เรียกใช้การทดสอบหน่วย
นำเข้า org.elasticsearch.index.query.QueryBuilders.MatchallQueryImport org.junit.testimport org.junit.runner.runwithimport org.springframework.boot.test.context.springboottestimimport http://quanke.name เมื่อปี 2018/1/9 */@runwith (springrunner :: คลาส) @springboottestclass ApplicationTests: elasticSearchClient () {@test fun `es test test" `() {val qb = matchallQuery () การตอบสนอง val = ไคลเอนต์ !! editions.get () println (ตอบกลับ)}}เราเขียน dayu-spring-boot-starter-es และเรามีโอกาสที่จะโอเพนซอร์ส
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น