إعداد التكوين
أضف التبعيات التالية في ملف build.gradle:
ترجمة "org.elasticsearch.client: النقل: 5.5.2" compile "org.elasticsearch: Elasticsearch: 5.5.2" // es 5
هنا ، يستخدم Spring Boot الإصدار 1.5.4. تم إصدار النسخة الرسمية من Spring Boot 2 قبل بضعة أيام. واحدة من الميزات الجديدة لـ Spring Boot 2 هي دعم Kotlin. يعتمد Spring Boot 2 على ربيع 5. Spring 5 يدعم أيضًا Koltin ، لذلك بدأ Spring أيضًا في دعم البرمجة الوظيفية.
حول توافق الإصدار
قم بتكوين العميل الذي يصل إلى Elasticsearch ، ويستخدم جميعها es Javaapi الأصلي هنا.
ConfigurationPublic Class ElasticsearchConfig {bean (name = "client") transportclient getClient () inetsocketTransportAddress node = null ؛ حاول {node = new inetsocketTransportAddress (inetaddress.getByName ("192.168.124.128") ، 9300) ؛ } catch (unknownHostException e) {E.PrintStackTrace () ؛ } إعدادات الإعدادات = الإعدادات. عميل TransportClient = جديد prebuiltTransportClient (الإعدادات) ؛ client.addTransportAddress (Node) ؛ إرجاع العميل ؛ }}يمكن عرض منفذ SocketTransport باستخدام http: // ip: 9200/_nodes ، والافتراضي هو استخدام المنفذ 9300.
عملية CRUD
قم بإنشاء وحدة تحكم جديدة ، ElasticsearchController ، باستخدام ES Javaapi الأصلي.
RestControllerPublic Class ElasticsearchController
إضافة طرق لإضافة وحذف والبحث والتعديل في وحدة التحكم
إضافة العمليات
postmapping ("إضافة/كتاب/رواية") استجابة عامة add (requestparam (name = "title") السلسلة ، requestparam (name = "authro) HH: MM: SS ") Date PublishDate) {try {xContentBuilder Content = xContentFactory.jsonbuilder (). indexResponse result = this.client.prepareIndex ("book" ، "Novel"). SetSource (content) .get () ؛ إرجاع استجابة جديدة (result.getID () ، httpstatus.ok) ؛ } catch (ioException e) {E.PrintStackTrace () ؛ إرجاع استجابة جديدة (httpstatus.internal_server_error) ؛ }}حذف العملية
@deletemapping ("/delete/book/novel") استجابة عامة delete (@requestparam (name = "id") string id) إرجاع استجابة جديدة (result.getResult (). toString () ، httpstatus.ok) ؛ }عمليات البحث
GetMapping ("/get/book/novel") الاستجابة العامة GET (REQUESTPARAM (name = "id" ، defaultValue = "") string id) {if (id.isempty ()) {return responseentity (httpstatus.not_found) ؛ } getResponse result = this.client.prepareget ("book" ، "novel" ، id) .get () ؛ if (! result.isexists ()) {return responseentity (httpstatus.not_found) ؛ } إرجاع استجابة جديدة (result.getSource () ، httpstatus.ok) ؛ }تحديث العملية
PUTMapping ("/put/book/novel") تحديث الاستجابة العامة (requestparam (name = "id") معرف السلسلة ، @requestparam (name = "title" ، required = false) عنوان السلسلة ، REQUESTPARAM (name = "uphul" ، required = false) string) {xcontentbuilder builder = if (title! = null) {builder.field ("title" ، title) ؛ } if (uptor! = null) {builder.field ("uptor" ، effect) ؛ } builder.endobject () ؛ updateRequest updateRequest = new UpdatErequest ("Book" ، "Novel" ، id) ؛ updateRequest.doc (builder) ؛ نتيجة updateSponse = client.update (updaterequest) .get () ؛ إرجاع استجابة جديدة (result.getResult (). toString () ، httpstatus.ok) ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ إرجاع استجابة جديدة (httpstatus.internal_server_error) ؛ }}البحث المركب
getMapping ("/Query/Book/Novel") استجابة عامة استجابة (requestparam (name = "uptor" ، مطلوب = خطأ) سلسلة مؤلف ، @requestparam (name = "title" ، required = false) string title ، inquoutparam (name = "gt_word_count" ، defaultvalue = "0 = false) Integer ltwordCount) {boolqueryBuilder boolquerybuilder = querybuilders.boolquery () ؛ if (uptor! = null) {boolquerybuilder.must (QueryBuilders.Matchquery ("uptor" ، uplant)) ؛ } if (title! = null) {boolquerybuilder.must (QueryBuilders.matchquery ("title" ، title)) ؛ } RangeQueryBuilder RangeQueryBuilder = QueryBuilders.RangeQuery ("Word_Count"). من (gtwordCount) ؛ if (ltwordcount! = null && ltwordcount> 0) {rangequeryBuilder.to (ltwordCount) ؛ } boolquerybuilder.filter (RangeQueryBuilder) ؛ SearchRequestBuilder SearchRequestBuilder = this.client.preparesearch ("book") .SetTypes ("Novel") .SetSearchType (SearchType.dfs_query_then_fetch) .setquery (boolquerybuilder) .setfrom (0) .SetSizize (10) ؛ System.out.println (SearchRequestBuilder) ؛ // debug searchResponse Response = searchRequestBuilder.get () ؛ قائمة <map <string ، object >> result = new ArrayList <> () ؛ لـ (searchhit hit: desponse.gethits ()) {result.add (hit.getSource ()) ؛ } إرجاع استجابة جديدة (النتيجة ، httpstatus.ok) ؛ }الرمز أعلاه ينظم استعلامات مركبة مماثلة للاستعلام التالي DSL:
{"query": {"bool": {"must": [{"match": {"uptor": "Zhang San"}} ، {"match": {"title": "elasticsearch"}}] ، }}لخص
ما ورد أعلاه هو ما قدمه المحرر إلى Springboot يدمج Elasticsearch وينفذ عمليات CRUD. آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر على الجميع في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!