




免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Elasticsearch的java api使用Java api 訪問(wèn)ElasticSearch的一個(gè)演示.網(wǎng)上的例子都是各個(gè)之間獨(dú)立的,個(gè)別地方確實(shí)不好整合在一起來(lái)理解,希望通過(guò)此粗淺的例子能給使用java做搜索引擎的同學(xué)一些幫助.使用環(huán)境:1 Jdk1.6 u292 ElasticSearch(0.20.2)-RTF(感謝medcl的奉獻(xiàn))版本,在谷歌中搜索github中下載.3 Windows 74 ElasticSearch 訪問(wèn)用jar包.使用maven來(lái)添加 org.elasticsearch elasticsearch 0.20.2 ES的環(huán)境搭建:1解壓ElasticSearch(0.20.2)-RTF到某個(gè)目錄, 在本例中ESrtf解壓到了兩臺(tái)電腦上(ip:32,ip:5)2在本例中因?yàn)槭褂玫氖莚tf的版本,所以只需修改Eshome config目錄下的elasticsearch.yml文件,在#: elasticsearch這行下增加: wallyCluster這行,作用為將es集群的默認(rèn)名elasticsearch改為wallyCluster(自定義的集群名稱).在#network.host: 這行下增加network.host: 32(本例中es解壓到了2臺(tái)電腦中,所以另一臺(tái)的應(yīng)該為5),作用為綁定es啟動(dòng)時(shí)對(duì)外服務(wù)的ip,因?yàn)槲宜玫臋C(jī)子有多個(gè)網(wǎng)卡,所以指定了,如果是單網(wǎng)卡,可以不用這句設(shè)置.3 在eshome下的bin目錄中直接運(yùn)行elasticsearch.bat(前提為必須設(shè)置好java的home環(huán)境變量)啟動(dòng)es使用rtf版本進(jìn)行開(kāi)發(fā),es基本不需要修改什么.至于es中使用到的內(nèi)存大小設(shè)置,中文分詞,cluster等等ES概念請(qǐng)百度.Java api的使用:網(wǎng)上看了各種例子,很大程度屬于轉(zhuǎn)載,講到j(luò)ava api的使用,都是簡(jiǎn)單的某個(gè)方面的使用,看es官網(wǎng)介紹加自己的理解摸索,下面給出個(gè)完整使用javaapi的demo. import java.io.IOException;import org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder;import org.elasticsearch.action.index.IndexResponse;import org.elasticsearch.client.Client;import org.elasticsearch.client.transport.TransportClient;import mon.settings.ImmutableSettings;import mon.settings.Settings;import mon.transport.InetSocketTransportAddress;import mon.xcontent.XContentBuilder;import mon.xcontent.XContentFactory;import com.wally.crj.util.TimeHelper;public class ESMappingBiz private Client client;public Client getClient() return client;public void setClient(Client client) this.client = client;/* * 預(yù)定義一個(gè)索引的mapping,使用mapping的好處是可以個(gè)性的設(shè)置某個(gè)字段等的屬性 * throws Exception */public void buildIndexSysDm() throws Exception/在本例中主要得注意,ttl及timestamp如何用java ,這些字段的具體含義,請(qǐng)去到es官網(wǎng)查看CreateIndexRequestBuilder cib=client.admin().indices().prepareCreate(productindex);XContentBuilder mapping = XContentFactory.jsonBuilder().startObject().startObject(we3r)/.startObject(_ttl)/有了這個(gè)設(shè)置,就等于在這個(gè)給索引的記錄增加了失效時(shí)間,/ttl的使用地方如在分布式下,web系統(tǒng)用戶登錄狀態(tài)的維護(hù).field(enabled,true)/默認(rèn)的false的.field(default,5m)/默認(rèn)的失效時(shí)間,d/h/m/s 即天/小時(shí)/分鐘/秒.field(store,yes).field(index,not_analyzed).endObject().startObject(_timestamp)/這個(gè)字段為時(shí)間戳字段.即你添加一條索引記錄后,自動(dòng)給該記錄增加個(gè)時(shí)間字段(記錄的創(chuàng)建時(shí)間),搜索中可以直接搜索該字段.field(enabled,true).field(store,no).field(index,not_analyzed).endObject().startObject(properties)/properties下定義的title等等就是屬于我們需要的自定義字段了,相當(dāng)于數(shù)據(jù)庫(kù)中的表字段 ,此處相當(dāng)于創(chuàng)建數(shù)據(jù)庫(kù)表.startObject(title).field(type, string).field(store, yes).endObject() .startObject(description).field(type, string).field(index, not_analyzed).endObject() .startObject(price).field(type, double).endObject() .startObject(onSale).field(type, boolean).endObject() .startObject(type).field(type, integer).endObject() .startObject(createDate).field(type, date).field(format,YYYYMMddhhMMSS).endObject().endObject().endObject().endObject(); cib.addMapping(prindextype, mapping);cib.execute().actionGet();/* * 該方法為增加索引記錄 * throws Exception */public void buildIndexSysDm22() throws Exception/ productindex為上個(gè)方法中定義的索引,prindextype為類型.jk8231為id,以此可以代替memchche來(lái)進(jìn)行數(shù)據(jù)的緩存 IndexResponse response = client.prepareIndex(productindex, prindextype ,jk8231) .setSource(XContentFactory.jsonBuilder() .startObject() .field(title, abcd1)/該字段在上面的方法中mapping定義了,所以該字段就有了自定義的屬性,比如 type等 .field(description, 中國(guó)人3) .field(price, 232 ) .field(onSale,true) .field(type,2) .field(createDate,TimeHelper.getCurrentTime() .field(dfsfs,哈哈)/該字段在上面方法中的mapping中沒(méi)有定義,所以該字段的屬性使用es默認(rèn)的. .endObject() ) .setTTL(8000)/這樣就等于單獨(dú)設(shè)定了該條記錄的失效時(shí)間,單位是毫秒,必須在mapping中打開(kāi)_ttl的設(shè)置開(kāi)關(guān) .execute() .actionGet(); IndexResponse response2 = client.prepareIndex(productindex, prindextype ,jk8234) .setSource(XContentFactory.jsonBuilder() .startObject() .field(title, abcd2) .field(description, 中國(guó)人2) .field(price, 232 ) .field(onSale,true) .field(type,22) .field(createDate,TimeHelper.getCurrentTime() .endObject() ) .execute() .actionGet(); /* * 得到訪問(wèn)es的客戶端,我們使用Transport Client * return */public Client buildClient()Settings settings = ImmutableSettings.settingsBuilder().put(client.transport.sniff, true).put(, wallyCluster).build();Client client = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress(32, 9300) .addTransportAddress(new InetSocketTransportAddress(5, 9300);return client;/* * 搜索的使用 */public void exm()System.out.println(刪除);DeleteResponse responsedd = client.prepareDelete(productindex, prindextype, 34dds1) .setOperationThreaded(false) .execute() .actionGet();System.out.println(根據(jù)主鍵搜索得到值);GetResponse responsere = client.prepareGet(productindex, prindextype, oht-Sp87SA6J5l3yo9dagw) .execute() .actionGet();System.out.println(完成讀取-+responsere.getSourceAsString();System.out.println(搜索);SearchRequestBuilder builder= client.prepareSearch(productindex) /搜索productindex,prepareSearch(String. indices)注意該方法的參數(shù),可以搜索多個(gè)索引 .setTypes(prindextype) .setSearchType(SearchType.DEFAULT) .setFrom(0) .setSize(50); QueryBuilder qb2 = QueryBuilders.boolQuery() / boolQuery() 就相當(dāng)于 sql中的and .must(new QueryStringQueryBuilder(萬(wàn)d 里).field(description)/QueryStringQueryBuilder是單個(gè)字段的搜索條件,相當(dāng)于組織sql的 where后面的 字段名=字段值 .should(new QueryStringQueryBuilder(3).field(dfsfs) .must(QueryBuilders .termQuery(dfsfs, 里);/關(guān)于QueryStringQueryBuilder及termQuery等的使用可以使用es插件head來(lái)進(jìn)行操作體會(huì)個(gè)中query的不同 builder.setQuery(qb2); SearchResponse responsesearch = builder.execute().actionGet(); System.out.println(+responsesearch);tryString jsondata= responsesearch.getHits().getHits()0.getSourceAsString();System.out.println(搜索出來(lái)的數(shù)據(jù)jsondata- +jsondata);catch(Exception es)public static void main(String
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年藝術(shù)市場(chǎng)數(shù)字化交易平臺(tái)藝術(shù)市場(chǎng)交易稅收優(yōu)惠政策研究報(bào)告
- 八年級(jí)期初家長(zhǎng)會(huì)課件
- 安全專項(xiàng)試題及答案
- 新型農(nóng)業(yè)經(jīng)營(yíng)主體2025年農(nóng)業(yè)科技園區(qū)建設(shè)與培育策略研究報(bào)告
- 員工安全培訓(xùn)課件
- 中國(guó)功夫說(shuō)課稿課件博客
- 中國(guó)剪紙美術(shù)課件學(xué)習(xí)指南
- 腫瘤患者心理癥狀分析與干預(yù)
- 中國(guó)農(nóng)業(yè)銀行課件
- 八年級(jí)暑假家長(zhǎng)會(huì)課件
- 個(gè)人信息保護(hù)合規(guī)審計(jì)師CCRC-PIPCA含答案
- 陰道松弛激光治療
- 2025至2030年中國(guó)電商導(dǎo)購(gòu)行業(yè)市場(chǎng)運(yùn)營(yíng)態(tài)勢(shì)及投資前景趨勢(shì)報(bào)告
- 河北省邢臺(tái)市卓越聯(lián)盟2024-2025學(xué)年高二下學(xué)期第三次考試(6月)語(yǔ)文試卷(圖片版含解析)
- 2025年佛山市南海區(qū)民政局招聘殘疾人專項(xiàng)工作人員題庫(kù)帶答案分析
- 公寓中介渠道管理制度
- PICC尖端心腔內(nèi)心電圖定位技術(shù)
- 2024東莞農(nóng)商銀行社會(huì)招聘筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 肺性腦病的護(hù)理
- AI音樂(lè)概論知到智慧樹(shù)期末考試答案題庫(kù)2025年四川音樂(lè)學(xué)院
- 混凝土銷售技能培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論