通過RestHighLevelClient操作ES

2022-09-07 04:33:09 字數 4581 閱讀 4528

一、查詢相關

在es查詢中,must相當於sql語句中的and,should相當於or。當想要實現類似於"select * from table where a and (b or c or d)"的功能時可以借助於es中的bool。即resthighlevelclient中的boolquerybuilder。示例如下:

//先構建乙個bool物件用於存放or相關的條件

if (!stringutils.isempty(realname))

if(!stringutils.isempty(orgcode))

//and條件可以選擇match_phrase短語查詢

querybuilder wclass = querybuilders.matchphrasequery("source_ke", "sentiment");

//將所有條件再組裝到乙個bool物件中

boolquerybuilder boolbuilder = querybuilders.boolquery();

boolbuilder.must(boolquerybuilder);

boolbuilder.must(wclass);

searchsourcebuilder builder = new searchsourcebuilder();

builder.query(boolbuilder)

根據時間範圍作資料過濾時,通過rangequerybuilder和filter完成

searchsourcebuilder builder = new searchsourcebuilder();

rangequerybuilder timequery = querybuilders.rangequery("ctime");

if (!stringutils.isempty(infolistquery.getstarttime()))

if (!stringutils.isempty(infolistquery.getendtime()))

builder.postfilter(timequery);

使用es聚合函式獲得統計值

//指定要聚合計算的字段,並為結果指定名稱

termsaggregationbuilder field = aggregationbuilders.terms("sentimentgroup").field("sentiment");

searchsourcebuilder builder = new searchsourcebuilder();

//不需要檢視詳細內容

builder.query(boolbuilder).aggregation(field).size(0);

//請求物件攜帶條件,查詢型別,一般預設即可

searchrequest searchrequest = new searchrequest(tcesidx).types(tcestype);

searchrequest.source(builder).searchtype(searchtype.default);

try else if ("1".equals(bucket.getkeyasstring())) else

}

執行獲取es查詢結果

//根據發布時間降序排列

sortbuilder sortbuilder = sortbuilders.fieldsort("ctime").order(sortorder.desc);

builder = builder.sort(sortbuilder);

//指定頁碼

builder.from((infolistquery.getpageno()-1)*infolistquery.getpagesize()).size(infolistquery.getpagesize());

try

}}//獲得查詢條件下的總的個數

searchresponse searchresponsetotal = resthighlevelclient.search(searchrequesttotal);

result.settotal(searchresponsetotal.gethits().gettotalhits());

執行查詢結果中的返回字段

builder2.query(wclass).from(0).size(integer.valueof(string.valueof(total))).fetchsource("include", "");
二、刪除相關

查詢資料後根據_id欄位執行刪除操作

searchresponse response = resthighlevelclient.search(searchrequest);

searchhits hits = response.gethits();

listdocids = new arraylist<>(hits.gethits().length);

for (searchhit hit : hits)

//bulkrequest bulkrequest = new bulkrequest();

//根據id進行刪除

for (string id : docids)

三、初始化

引入m**en依賴

org.elasticsearch.client

elasticsearch-rest-high-level-client

6.4.2

org.elasticsearch

elasticsearch

org.elasticsearch.client

elasticsearch-rest-client

org.elasticsearch

elasticsearch

6.4.2

org.elasticsearch.client

elasticsearch-rest-client

6.4.2

es配置類

// 配置連線時間延時

public void setconnecttimeoutconfig());

}// 使用非同步httpclient時設定併發連線數

通過ActiveProcessLinks遍歷程序

程序的遍歷有多種方法。在應用程式裡可以使用createtoolhelp32snapshot函式先做個程序快照 snapshot 然後通過返回的資料進行遍歷。在核心程式設計裡可以通過核心資料結構來實現。核心結構eprocess 執行體程序塊 executive process 是乙個不透明 opaqu...

IEEE PDF eXpress 通過方法

ieee pdf express這個東西比較煩人 文章是用latex寫的,生成pdf後始終是不能通過 原因是有些文字無法嵌入到pdf中的,本人之前的解決方法是把所有檔案打包生成zip後上傳,讓ieee來生成pdf 但這次一直不行,不過最後找到了乙個非常簡單的方法 安裝pdfcreater,之後列印生...

如何通過dba hist active sess

背景 在很多情況下,當資料庫發生效能問題的時候,我們並沒有機會來收集足夠的診斷資訊,比如system state dump或者hang analyze,甚至問題發生的時候dba根本不在場。這給我們診斷問題帶來很大的困難。那麼在這種情況下,我們是否能在事後收集一些資訊來分析問題的原因呢?在oracle...