คำนำ
ในบทความก่อนหน้านี้ Springboot, Mybatis, Druid และ Pagehelper ได้รับการรวมเข้าด้วยกันและดำเนินการแหล่งข้อมูลหลายแหล่ง บทความนี้ส่วนใหญ่แนะนำและใช้ Elastisearch เครื่องมือค้นหาที่ได้รับความนิยมมากที่สุดและใช้ร่วมกับ Springboot
รู้เบื้องต้นเกี่ยวกับ Elasticsearch
Elasticsearch เป็นเซิร์ฟเวอร์การค้นหาที่ใช้ Lucene จริง ๆ แล้วมันห่อหุ้ม Lucene และให้ส่วนต่อประสานการดำเนินงานของ REST API Elasticsearch เป็นเครื่องมือค้นหาและวิเคราะห์แบบเต็มรูปแบบโอเพนซอร์ซที่สามารถปรับขนาดได้สูงซึ่งสามารถใช้ในการจัดเก็บค้นหาและวิเคราะห์ข้อมูลขนาดใหญ่ได้อย่างรวดเร็ว
คุณสมบัติหลักของ Elasticsearch: กระจายความพร้อมใช้งานสูงการเขียนแบบอะซิงโครนัสหลาย API ที่เน้นเอกสาร
แนวคิดหลักของ ElasticSearch: ใกล้เรียลไทม์, คลัสเตอร์, โหนด (บันทึกข้อมูล), ดัชนี, ชาร์ด สามารถจัดเก็บค้นหาและวิเคราะห์ข้อมูลจำนวนมากได้อย่างรวดเร็ว
กรณีใช้ Elasticsearch: Wikipedia, Stack Overflow, GitHub ฯลฯ
Springboot รวม Elasticsearch
ก่อนที่จะใช้ Springboot เพื่อรวม Elasticsearch เราควรเข้าใจความสัมพันธ์ระหว่างพวกเขา
| สปริงบูตเวอร์ชัน (x) | สปริงข้อมูล Elasticsearch เวอร์ชัน (Y) | Elasticsearch เวอร์ชัน (Z) |
|---|---|---|
| x <= 1.3.5 | y <= 1.3.4 | z <= 1.7.2* |
| x> = 1.4.x | 2.0.0 <= y <5.0.0 ** | 2.0.0 <= z <5.0.0 ** |
เวอร์ชันของ Springboot ที่เราใช้อยู่ที่นี่คือ 1.5.9 และรุ่น Elasticsearch คือ 2.3.5
การใช้ Springboot เพื่อรวม Elasticsearch โดยทั่วไปจะถูกห่อหุ้มโดยใช้ SpringData และจากนั้นอินเตอร์เฟส Dao Layer จะสืบทอดคลาส ElasticsearchRepository คลาสนี้ใช้วิธีการมากมายเช่นวิธี CRUD ที่ใช้กันทั่วไป
การใช้ SpringData
ขั้นแรกให้เตรียมการที่เกี่ยวข้องก่อนใช้งาน
การกำหนดค่าของ Maven มีดังนี้:
<การพึ่งพา> <roupId> org.springframework.boot </groupId> <ratifactid> Spring-Boot-Starter-Web </artifactid> <sersion> 1.5.9.release </เวอร์ชัน> </dependency> <ArtIfactId> Spring-Boot-Starter-Data-Elasticsearch </artifactId> <cersion> 1.5.9.release </เวอร์ชัน> </dependency>
การกำหนดค่าแอปพลิเคชัน
Spring.data.elasticsearch.repositories.enabled = truespring.data.elasticsearch.cluster-nodes = 127.0.0.1/: 9300
หมายเหตุ: 9300 เป็นพอร์ตของไคลเอนต์ Java 9200 เป็นอินเทอร์เฟซที่รองรับ HTTP ที่เหลือ
การกำหนดค่าเพิ่มเติม:
Spring.data.elasticsearch.cluster-name ชื่อคลัสเตอร์ Elasticsearch (ค่าเริ่มต้น: Elasticsearch)
Spring.data.elasticsearch.cluster-nodes รายการของที่อยู่โหนดคลัสเตอร์คั่นด้วยเครื่องหมายจุลภาค หากไม่ได้ระบุให้เริ่มโหนดไคลเอนต์
Spring.data.elasticsearch.propertie ใช้เพื่อกำหนดค่าคุณสมบัติเพิ่มเติมของไคลเอนต์
Spring.data.elasticsearch.repositories.enable เปิดใช้งานที่เก็บ Elasticsearch (ค่าเริ่มต้น: จริง)
การเขียนรหัส
ชั้นเรียน
@Document (indexname = "userindex", type = "ผู้ใช้") ผู้ใช้ระดับสาธารณะใช้การใช้งาน serializable { / ** * * / ส่วนตัวคงที่สุดท้าย Long SerialVersionUid = 1L; / ** หมายเลข*/ ID ยาวส่วนตัว; / ** ชื่อ*/ ชื่อสตริงส่วนตัว; / ** อายุ*/ อายุจำนวนเต็มส่วนตัว; / ** คำอธิบาย*/ คำอธิบายสตริงส่วนตัว; / ** เวลาการสร้าง*/ สตริงส่วนตัว createtM; // getter และ setter ละเว้น}เมื่อใช้ SpringData จะต้องตั้งค่า indexname และพิมพ์ในคลาสเอนทิตี หากเปรียบเทียบกับฐานข้อมูลดั้งเดิมมันจะเทียบเท่ากับห้องสมุดและตาราง
ควรสังเกตว่าทั้งดัชนีและประเภทต้องอยู่ในตัวพิมพ์เล็ก !!!
ชั้น Dao
อินเทอร์เฟซสาธารณะ UserDao ขยาย ElasticSearchRepository <User, Long> {}ชั้น DAO นั้นค่อนข้างง่ายที่นี่เพียงสืบทอดคลาส ElasticSearchRepository วิธีการหลักคือบันทึกลบและค้นหา วิธีการบันทึกค่อนข้างเหมือนแทรกและอัปเดต หากไม่มีจะมีการเพิ่มและหากมีหนึ่งมันจะได้รับการคุ้มครอง วิธีการลบส่วนใหญ่จะลบข้อมูลและไลบรารีดัชนี สำหรับการค้นหามันเป็นแบบสอบถามรวมถึงการสืบค้นที่ใช้กันทั่วไปเช่นการแบ่งหน้าน้ำหนัก ฯลฯ
ชั้นบริการ
@ServicePublic คลาส UserserViceImpl ใช้ UserserVice {@AutoWired UserDao UserDao; @Override public boolean แทรก (ผู้ใช้ผู้ใช้) {boolean falg = false; ลอง {userdao.save (ผู้ใช้); FALG = TRUE; } catch (exception e) {e.printstacktrace (); } return falg; } @Override รายการสาธารณะ <user> ค้นหา (สตริง searchContent) {queryStringQueryBuilder builder = ใหม่ queryStringQueryBuilder (SearchContent); System.out.println ("คำสั่งค้นหา:"+Builder); iterable <user> searchResult = userdao.search (builder); ตัววนซ้ำ <user> iterator = searchResult.iterator (); รายการ <user> list = new ArrayList <ผู้ใช้> (); ในขณะที่ (iterator.hasnext ()) {list.add (iterator.next ()); } return list; } @Override รายการสาธารณะ <user> SearchUser (จำนวนเต็ม pagenumber, จำนวนเต็ม pagesize, สตริง searchContent) {// พารามิเตอร์การแบ่งแยก pagination pageable pageable = new PageRequest (pagenumber, หน้า); QueryStringQueryBuilder Builder = ใหม่ QueryStringQueryBuilder (SearchContent); SearchQuery SearchQuery = ใหม่ NativeSearchQueryBuilder (). withpageable (pageable). withQuery (builder) .build (); System.out.println ("คำสั่งค้นหา:" + searchQuery.getQuery (). toString ()); หน้า <ผู้ใช้> SearchPagerEsults = userDao.Search (SearchQuery); ส่งคืน searchpageresults.getContent (); } @Override รายการสาธารณะ <user> SearchUserByweight (String SearchContent) {// Query ตาม functionScorequiller functionScoreQueryBuilder = queryBuilders.FunctionScorequery (). เพิ่ม (queryBuilders.BoolQuery () ScoreFunctionBuilders.WeightFactorFunction (10)) .Add (queryBuilders.BoolQuery (). ควร (queryBuilders.MatchQuery ("คำอธิบาย", searchContent)), scorefunctionbuilders.weightfactorfunction (100)). setminscore (2); System.out.println ("คำสั่งค้นหา:" + functionScoreQueryBuilder.toString ()); iterable <user> searchResult = userDao.Search (functionScoreQueryBuilder); ตัววนซ้ำ <user> iterator = searchResult.iterator (); รายการ <user> list = new ArrayList <ผู้ใช้> (); ในขณะที่ (iterator.hasnext ()) {list.add (iterator.next ()); } return list; -ที่นี่ฉันได้เขียนวิธีการหลายวิธีวิธีหลักคือการสืบค้น แบบสอบถามรวมถึงการค้นหาข้อความแบบเต็มการสืบค้นการแบ่งหน้าและการสืบค้นน้ำหนัก สิ่งที่ต้องอธิบายคือการสืบค้นน้ำหนัก คะแนนน้ำหนักที่สูงขึ้นเท่าใดผลลัพธ์การสืบค้นก็จะสูงขึ้น หากไม่มีการตั้งค่าคะแนนสำหรับข้อมูลอื่นคะแนนเริ่มต้นของพวกเขาคือ 1 หากคุณไม่ต้องการสอบถามคำสั่งเหล่านี้เพียงใช้ setminscore เพื่อตั้งค่าเป็นมากกว่า 1
การทดสอบรหัส
เรียกอินเทอร์เฟซเพื่อเพิ่มข้อมูล
ข้อมูลใหม่:
โพสต์ http: // localhost: 8086/api/ผู้ใช้ {"id": 1, "ชื่อ": "จางซาน", "อายุ": 20, "คำอธิบาย": "จางซานเป็นวิศวกรพัฒนาจาวา", "createtm": "2018-4-25 11:07:42" SI เป็นวิศวกรทดสอบ "," createtm ":" 1980-2-15 19:01:32 "} {" id ": 3," ชื่อ ":" วังวู "," อายุ ": 25," คำอธิบาย ":" วังวูเป็นวิศวกรปฏิบัติการ ดำเนินการค้นหาข้อความเต็มรูปแบบ
ถาม
http: // localhost: 8086/api/ผู้ใช้? searchContent = วิศวกร
กลับ
[{"id": 2, "ชื่อ": "Li Si", "อายุ": 14, "คำอธิบาย": "Li Si เป็นวิศวกรทดสอบ", "CreateTm": "1980-2-15 19:01:32"}, {"ID": 1, "ชื่อ" "2018-4-25 11:07:42"}, {"id": 3, "ชื่อ": "วังวู", "อายุ": 25, "คำอธิบาย": "วังวูเป็นวิศวกรปฏิบัติการและบำรุงรักษา", "createtm": "2016-8-21 06:11:32"}] ดำเนินการค้นหาการแบ่งหน้า
ถาม
http: // localhost: 8086/api/ผู้ใช้? pagenumber = 0 & pagesize = 2 & searchContent = วิศวกร
กลับ
[{"id": 2, "ชื่อ": "li si", "อายุ": 14, "คำอธิบาย": "li si เป็นวิศวกรทดสอบ"}, {"id": 1, "ชื่อ": "จางซาน", "อายุ": 20, "คำอธิบาย": ทำการสืบค้นน้ำหนัก
ถาม
http: // localhost: 8086/api/user2? searchContent = li si
กลับ
[{"id": 2, "ชื่อ": "Li Si", "อายุ": 24, "คำอธิบาย": "Li Si เป็นวิศวกรทดสอบ", "CreateTm": "1980-2-15 19:01:32"}]คำสั่งพิมพ์แบบสอบถามน้ำหนัก:
คำสั่ง Query: {{"function_score": {"ฟังก์ชั่น": [{"ตัวกรอง": {"bool": {"bool": {"ควร": {"match": {"name": {"}}}}}}}}}}}}}}}}}}}}}}}}}} {"bool": {"ควร": {"Match": {"คำอธิบาย": {"Query": "Li Si", "type": "Boolean"}}}}}}, "น้ำหนัก": 100.0}], "min_score": 2.0}}}}}หมายเหตุ: ในการทดสอบเนื่องจากน้ำหนักขั้นต่ำของ setminscore ถูกตั้งค่าให้แบ่งออกเป็น 2 ข้อมูลที่ไม่เกี่ยวข้องจะไม่ปรากฏ หากคุณต้องการแสดงเพียงแค่ลบในรหัส
หลังจากเพิ่มข้อมูลใหม่คุณสามารถป้อน: http: // localhost: 9200/_plugin/head/ในเบราว์เซอร์
จากนั้นคลิกแบบสอบถามพื้นฐานเพื่อดูข้อมูลที่เพิ่มขึ้น หากคุณต้องการใช้การสืบค้นคำสั่งคุณสามารถวางคำสั่งแบบสอบถามที่พิมพ์โดยคอนโซลในโปรแกรมไปยังอินเทอร์เฟซแบบสอบถามสำหรับการสืบค้น!
หมายเหตุ: ฉันติดตั้ง Elasticsearch ที่นี่บน Windows และติดตั้งหัวปลั๊กอิน ES ขั้นตอนการติดตั้งที่เฉพาะเจาะจงอยู่ท้ายบทความ
นอกเหนือจาก SpringData แล้วยังมีวิธีอื่นในการใช้งาน Elasticsearch
ตัวอย่างเช่นใช้ Native Elasticsearch API และใช้คลาส TransportClient เพื่อใช้งาน
หรือใช้เพื่อห่อหุ้มโดยฤดูใบไม้ผลิเพียงแค่ฉีดถั่วในชั้นบริการ
ตัวอย่าง:
@autowired ElasticSearchTemplate ElasticsearchTemplate;
อย่างไรก็ตามวิธีการข้างต้นมีข้อ จำกัด ของพวกเขานั่นคือเมื่อรุ่นของ Elasticsearch เปลี่ยนไป Java API ที่เกี่ยวข้องก็มีการปรับอย่างต่อเนื่องนั่นคือหลังจากที่ Elasticsearch เปลี่ยนเวอร์ชันเซิร์ฟเวอร์ของลูกค้าอาจต้องเขียนใหม่
ดังนั้นจึงแนะนำเครื่องมือของบุคคลที่สามที่มีประโยชน์มาก jestclient มันห่อหุ้ม Elasticsearch และเติมช่องว่างในไคลเอนต์อินเตอร์เฟส Elasticsearch Httprest มันเหมาะสำหรับ Elasticsearch 2.x หรือสูงกว่าและไม่จำเป็นต้องเปลี่ยนรหัสเนื่องจากการเปลี่ยนแปลงเวอร์ชันเซิร์ฟเวอร์ Elasticsearch!
jestclient
ก่อนอื่นเพิ่มการพึ่งพาต่อไปนี้ใน Maven:
<Effercing> <roupID> iO.SearchBox </groupId> <ratifactId> jest </artifactid> <version> 5.3.3 </Serve> </perentency>
จากนั้นเขียนรหัสทดสอบที่เกี่ยวข้อง
ความคิดเห็นในรหัสควรสมบูรณ์มากดังนั้นฉันจะไม่พูดคุยเกี่ยวกับรหัสที่นี่มากเกินไป
นำเข้า java.util.arraylist; นำเข้า java.util.list; นำเข้า org.elasticsearch.index.query.queryBuilders; นำเข้า org.elasticsearch.search.builder.SearchSourceBuilder; io.SearchBox.Client.jestClientFactory; นำเข้า io.searchbox.client.jestresult; นำเข้า io.searchbox.client.config.httpClientConfig; นำเข้า io.Searchbox.core.bulk; นำเข้า io.Searchbox.core.bulkresult io.SearchBox.core.documentResult; นำเข้า io.searchbox.core.index; นำเข้า io.searchbox.core.search; นำเข้า io.searchbox.indices.createIndex; นำเข้า io.SearchBox.Indices.deleteIndex; นำเข้า iO.SearchBox.IndIck jesttest {ส่วนตัวคงที่ jestclient jestclient; สตริงคงที่ส่วนตัว indexname = "userindex"; // สตริงคงที่ส่วนตัว indexname = "userindex2"; สตริงคงที่ส่วนตัว typename = "ผู้ใช้"; String private String Elasticips = "http://192.169.2.98:9200"; // สตริงคงที่ส่วนตัว reatastips = "http://127.0.0.1:9200"; โมฆะคงที่สาธารณะหลัก (สตริง [] args) โยนข้อยกเว้น {jestClient = getJestClient (); InsertBatch (); serach1 (); serach2 (); serach3 (); jestclient.close (); } ส่วนตัว jestclient getJestClient () {JestClientFactory Factory = new JestClientFactory (); Factory.SethttpClientConfig (ใหม่ httpClientConfig.builder (Elasticips) .conntimeout (60000) .readtimeout (60000) .Multithreaded (จริง) .build ()); return Factory.getObject (); } โมฆะคงที่สาธารณะ INSERTBATCH () {รายการ <POCICT> OBJS = New ArrayList <Ojrop> (); OBJS.ADD (ผู้ใช้ใหม่ (1L, "Zhang San", 20, "Zhang San เป็นวิศวกรพัฒนา Java", "2018-4-25 11:07:42")); OBJS.ADD (ผู้ใช้ใหม่ (2L, "Li Si", 24, "Li Si เป็นวิศวกรทดสอบ", "1980-2-15 19:01:32")); OBJS.ADD (ผู้ใช้ใหม่ (3L, "Wang Wu", 25, "Wang Wu เป็นวิศวกรปฏิบัติการและบำรุงรักษา", "2016-8-21 06:11:32")); ผลลัพธ์บูลีน = false; ลอง {result = insertBatch (jestClient, indexName, typename, objs); } catch (exception e) {e.printstacktrace (); } system.out.println ("แบทช์ใหม่:"+ผลลัพธ์); } / *** การค้นหาข้อความแบบเต็ม* / โมฆะคงที่สาธารณะ serach1 () {string query = "วิศวกร"; ลอง {SearchSourceBuilder SearchSourceBuilder = ใหม่ SearchSourceBuilder (); SearchSourceBuilder.Query (QueryBuilders.QueryStringQuery (คำถาม)); // การตั้งค่าหน้า SearchSourceBuilder. จาก (0) .Size (2); System.out.println ("คำสั่งค้นหาข้อความแบบเต็มข้อความ:"+SearchSourceBuilder.toString ()); System.out.println ("ผลการค้นหาแบบเต็มข้อความผลตอบแทน:"+การค้นหา (jestclient, indexname, typename, searchSourceBuilder.toString ())); } catch (exception e) {e.printstacktrace (); }} / *** การค้นหาที่แน่นอน* / โมฆะสาธารณะคงที่ serach2 () {ลอง {searchSourceBuilder searchSourceBuilder = ใหม่ searchSourceBuilder (); SearchSourceBuilder.Query (QueryBuilders.termQuery ("อายุ", 24)); System.out.println ("คำสั่งค้นหาการค้นหาที่แน่นอน:"+SearchSourceBuilder.toString ()); System.out.println ("ผลลัพธ์การค้นหาที่แน่นอน:"+การค้นหา (jestclient, indexname, typename, searchSourceBuilder.toString ())); } catch (exception e) {e.printstacktrace (); }} / *** การค้นหาช่วงเวลา* / โมฆะสาธารณะคงที่ serach3 () {string createTm = "createTm"; สตริงจาก = "2016-8-21 06:11:32"; String to = "2018-8-21 06:11:32"; ลอง {SearchSourceBuilder SearchSourceBuilder = ใหม่ SearchSourceBuilder (); SearchSourceBuilder.Query (queryBuilders.RangeQuery (createtM) .gte (จาก) .lte (ถึง)); System.out.println ("คำสั่งการค้นหาช่วงเวลา:"+SearchSourceBuilder.toString ()); System.out.println ("Interval Search ส่งคืนผลลัพธ์:"+การค้นหา (jestclient, indexname, typename, searchSourceBuilder.toString ())); } catch (exception e) {e.printstacktrace (); }} / ** * สร้างดัชนี * @param indexname * @return * @throws Exception * / Public Boolean CreateIndex (JestClient JestClient, String indexName) โยนข้อยกเว้น {jestresult jr = jestclient.execute return jr.issucceeded (); } / ** * ข้อมูลใหม่ * @param indexname * @param typename * @param แหล่งที่มา * @return * @throws Exception * / public boolean แทรก (jestclient jestclient, indexname สตริง, typename สตริง, แหล่งที่มา) jestresult jr = jestclient.execute (putmapping); return jr.issucceeded (); } / ** * ข้อมูลการสอบถาม * @param indexname * @param typename * @return * @throws Exception * / สตริงคงที่สาธารณะ getIndexmapping (jestClient jestClient, indexname สตริง, สตริง typename) jestresult jr = jestclient.execute (getMapping); return jr.getjsonstring (); } / ** * เพิ่มข้อมูลในแบทช์ * @param indexname * @param typename * @param objs * @return * @throws Exception * / Public Static Boolean InsertBatch (JestClient JestClient, String indexname bulk.builder (). defaultIndex (indexname) .defaultType (typename); สำหรับ (Object OBJ: OBJS) {index index = new index.builder (obj) .build (); จำนวนมาก (ดัชนี); } BULKRESULT BR = jestClient.execute (bulk.build ()); return br.issucceeded (); } / ** * การค้นหาข้อความแบบเต็ม * @param indexname * @param typename * @param Query * @return * @throws Exception * / การค้นหาสตริงคงที่สาธารณะ jestresult jr = jestclient.execute (ค้นหา); // system.out.println ("-"+jr.getjsonstring ()); // system.out.println ("-"+jr.getSourceAsObject (user.class)); return jr.getSourceasstring (); } / ** * ลบดัชนี * @param indexname * @return * @throws Exception * / Public Boolean Delete (JestClient JestClient, String indexName) โยนข้อยกเว้น {Jestresult Jr = jestClient.execute return jr.issucceeded (); } / ** * ลบข้อมูล * @param indexname * @param typename * @param id * @return * @throws Exception * / Public Boolean DELETE (jestClient JestClient, indexName สตริง, สตริง typename, string id) delete.builder (id) .index (indexname) .type (typename) .build ()); ส่งคืนดร. issucceeded (); -หมายเหตุ: ก่อนการทดสอบให้อธิบายก่อนว่ารุ่น Elasticsearch ที่ติดตั้งบนระบบ Windows ในเครื่องคือ 2.3.5 และรุ่น Elasticsearch ที่ติดตั้งบนเซิร์ฟเวอร์ Linux คือ 6.2
ผลการทดสอบ
ค้นหาข้อความแบบเต็ม
คำสั่งค้นหาข้อความแบบเต็มข้อความ: {"จาก": 0, "size": 2, "Query": {"query_string": {"Query": "Engineer"}}} การค้นหาข้อความแบบเต็มส่งผลตอบแทน: {"id": 1, "ชื่อ": "Zhang San", "อายุ": 20, " วิศวกร "," createtm ":" 2018-4-25 11:07:42 "}, {" id ": 2," ชื่อ ":" Li Si "," อายุ ": 24," คำอธิบาย ":" Li Si เป็นวิศวกรทดสอบ "," Createtm ":" 1980-2-15 19:01:32 "จับคู่การค้นหา
คำสั่งค้นหาการค้นหาที่ถูกต้อง: {"Query": {"TERM": {"อายุ": 24}}} การค้นหาที่ถูกต้องส่งคืนผลลัพธ์: {"id": 2, "ชื่อ": "Li Si", "อายุ": 24, "คำอธิบาย": "Li Si เป็นวิศวกรทดสอบ"การค้นหาช่วงเวลา
คำสั่งการค้นหาช่วงเวลา: {"Query": {"range": {"createtm": {"จาก": "2016-8-21 06:11:32", "ถึง": "2018-8-21 06:11:32" San "," อายุ ": 20," คำอธิบาย ":" จางซานเป็นวิศวกรพัฒนา Java "," CreateTm ":" 2018-4-25 11:07:42 "}หลังจากเพิ่มข้อมูลใหม่เราสามารถไปที่ Linux Kibana เพื่อดำเนินการค้นหาที่เกี่ยวข้องและผลลัพธ์การสืบค้นมีดังนี้:
หมายเหตุ: Kibana เป็นซอฟต์แวร์โอเพ่นซอร์สใน Elk Kibana ให้บริการเว็บอินเตอร์เฟสที่เป็นมิตรกับการวิเคราะห์สำหรับ LogStash และ Elasticsearch เพื่อช่วยสรุปวิเคราะห์และค้นหาบันทึกข้อมูลที่สำคัญ
ผลลัพธ์ที่ส่งคืนโดยการทดสอบในรหัสข้างต้นนั้นสอดคล้องกับความคาดหวังของเรา ในหมู่พวกเขาใช้เพียงส่วนเล็ก ๆ ของ jestclient เท่านั้น สำหรับการใช้งานเพิ่มเติมคุณสามารถตรวจสอบเอกสารอย่างเป็นทางการของ JestClient
ติดตั้ง Elasticsearch บน Windows
1. การเตรียมเอกสาร
ดาวน์โหลดที่อยู่: https://www.elastic.co/downloads
เลือกเวอร์ชันที่เกี่ยวข้องกับ ElasticSearch จากนั้นเลือกไฟล์ zip ชื่อต่อท้ายเพื่อดาวน์โหลดจากนั้นคลายซิปหลังจากดาวน์โหลด
2. เริ่ม Elasticsearch
ไปที่ไดเรกทอรี bin และเรียกใช้ elasticsearch.bat
จากนั้นเข้าสู่: LocalHost: 9200 ในการเรียกดู
การแสดงอินเทอร์เฟซนั้นประสบความสำเร็จหมายถึงความสำเร็จ!
3. ติดตั้งปลั๊กอิน ES
การติดตั้งหัวส่วนต่อประสานการจัดการเว็บ
ป้อนไดเร็กทอรี bin เปิด CMD และป้อนอินเตอร์เฟส DOS
Enter: plugin install mobz/elasticsearch-head
ทำการดาวน์โหลด
หลังจากการดาวน์โหลดสำเร็จแล้ว ENTER: http: // localhost: 9200/_plugin/head/
หากอินเทอร์เฟซปรากฏขึ้นการติดตั้งจะสำเร็จ!
4. บริการลงทะเบียน
ป้อนไดเร็กทอรี bin เปิด CMD และป้อนอินเตอร์เฟส DOS
เข้า:
Service.bat InstallService.bat เริ่มต้น
หลังจากประสบความสำเร็จป้อน
Services.msc
ข้ามไปที่อินเทอร์เฟซบริการเพื่อดูสถานะการทำงานของ ES โดยตรง!
อื่น
เว็บไซต์อย่างเป็นทางการของ ELASTICSEARC API ที่อยู่:
https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.3/index.html
ที่อยู่ jestclientgithub:
https://github.com/searchbox-io/jest (ดาวน์โหลดท้องถิ่น)
ฉันวางโครงการใน GitHub
https://github.com/xuwujing/springboot (ดาวน์โหลดท้องถิ่น)
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะมีค่าอ้างอิงบางอย่างสำหรับการศึกษาหรือที่ทำงานของทุกคน หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร ขอบคุณสำหรับการสนับสนุน Wulin.com