首页 文章 精选 留言 我的

精选列表

搜索[文件操作],共10046篇文章
优秀的个人博客,低调大师

PyQt基本操作

PyQt的简介和基本安装方法读者可以自行google解决。先声明,本文章教基础,参考《征服Python》相关章节。不过不得不说,pyQt的教程真的好少,╮(╯▽╰)╭,悲催,大家有什么好的资料推荐一下,谢谢了。 先建立一个基本的界面看看: 1 2 3 4 5 6 7 8 9 10 11 12 import sys from PyQt4 import QtCore, QtGui class MyWindow( QtGui.QMainWindow ): def __init__( self ): QtGui.QMainWindow.__init__( self ) self .setWindowTitle( "PyQt" ) self .resize( 300 , 200 ) app = QtGui.QApplication( sys.argv ) mywindow = MyWindow() mywindow.show() app.exec_() 运行结果:

优秀的个人博客,低调大师

EditText操作收集

1.android EditText插入字符串到光标所在位置 EditText mTextInput=(EditText)findViewById(R.id.input);//EditText对象 int index = mTextInput.getSelectionStart();//获取光标所在位置 String text="I want to input str"; Editable edit = mTextInput.getEditableText();//获取EditText的文字 if (index < 0 || index >= edit.length() ){ edit.append(text); }else{ edit.insert(index,text);//光标所在位置插入文字 } 2.在EditText移动光标 我自己设计了一个拨号键盘,用来模拟android的手机拨号键,自己画了的键盘,显示的控件时editText。 但是点拨号键时光标不能随之输入的字符后移,而是一直呆在最前面。在看了android的文档关于edittext以及它的父类都没有看到相应的解决方法。 最后在google中搜索到一个解决方法。 EditText inputField = new EditText(this); Editable etext = inputField.getText(); int position = etext.length(); Selection.setSelection(etext, position); 最后可以将光标移动到EditText文本的右边。 3.EditText始终不弹出软件键盘 1.EditText默认不弹出软件键盘 方法一: 在AndroidMainfest.xml中选择哪个activity,设置windowSoftInputMode属性为adjustUnspecified|stateHidden 例如:<activity android:name=".Main" android:label="@string/app_name" android:windowSoftInputMode="adjustUnspecified|stateHidden" android:configChanges="orientation|keyboardHidden"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 方法二: 让EditText失去焦点,使用EditText的clearFocus方法 例如:EditText edit=(EditText)findViewById(R.id.edit); edit.clearFocus(); 方法三: 强制隐藏Android输入法窗口 例如:EditText edit=(EditText)findViewById(R.id.edit); InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(edit.getWindowToken(),0); 2.EditText始终不弹出软件键盘 例:EditText edit=(EditText)findViewById(R.id.edit); edit.setInputType(InputType.TYPE_NULL); 4.三种方式限制EditText的输入字数[转] 方法一:利用TextWatcher editText.addTextChangedListener(new TextWatcher() { private CharSequence temp; private boolean isEdit = true; private int selectionStart ; private int selectionEnd ; @Override public void beforeTextChanged(CharSequence s, int arg1, int arg2, int arg3) { temp = s; } @Override public void onTextChanged(CharSequence s, int arg1, int arg2, int arg3) { } @Override public void afterTextChanged(Editable s) { selectionStart = editText.getSelectionStart(); selectionEnd = editText.getSelectionEnd(); Log.i("gongbiao1",""+selectionStart); if (temp.length() > Constant.TEXT_MAX) { Toast.makeText(KaguHomeActivity.this, R.string.edit_content_limit, Toast.LENGTH_SHORT) .show(); s.delete(selectionStart-1, selectionEnd); int tempSelection = selectionStart; editText.setText(s); editText.setSelection(tempSelection); } } }); 方法二:利用InputFilter editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(100)}); //其中100最大输入字数 方法三:在XML中设定 Xml代码 <EditText . . . Android:maxLength="100" /> 本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/4917944.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

spring 操作elasticsearch

package com.gooddeep.dev.elasticsearch.commons.dao; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.elasticsearch.action.ActionFuture; import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest; import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.Client; import org.elasticsearch.cluster.health.ClusterHealthStatus; import org.elasticsearch.common.text.Text; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.highlight.HighlightBuilder; import org.elasticsearch.search.highlight.HighlightBuilder.Field; import org.elasticsearch.search.sort.FieldSortBuilder; import org.elasticsearch.search.sort.SortOrder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; import org.springframework.data.elasticsearch.core.SearchResultMapper; import org.springframework.data.elasticsearch.core.query.Criteria; import org.springframework.data.elasticsearch.core.query.CriteriaQuery; import org.springframework.data.elasticsearch.core.query.DeleteQuery; import org.springframework.data.elasticsearch.core.query.IndexQuery; import org.springframework.data.elasticsearch.core.query.IndexQueryBuilder; import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.data.elasticsearch.core.query.SearchQuery; import org.springframework.data.elasticsearch.core.query.StringQuery; import org.springframework.stereotype.Component; import com.gooddeep.dev.core.helper.PropertyHelper; import com.gooddeep.dev.core.helper.UuidHelper; import com.gooddeep.dev.core.model.BasePage; import com.gooddeep.dev.elasticsearch.commons.model.EsBaseBean; import com.gooddeep.dev.elasticsearch.commons.service.EsBaseService; @Component("esBaseDao") public abstract class EsBaseDaoImpl<T> implements EsBaseDao<T> { private Logger logger = LoggerFactory.getLogger(EsBaseService.class); @Autowired private ElasticsearchTemplate elasticsearchTemplate; @Autowired private Client esClient; /** * 插入或等新,需要有id,id需要自己生成 * * @param tList * @return */ public boolean insertOrUpdate(List<T> tList) { List<IndexQuery> queries = new ArrayList<IndexQuery>(); for (T t : tList) { String id = ((EsBaseBean) t).getId(); if (id == null) { id = UuidHelper.getRandomUUID(); ((EsBaseBean) t).setId(id); } IndexQuery indexQuery = new IndexQueryBuilder().withId(id).withObject(t).build(); queries.add(indexQuery); } elasticsearchTemplate.bulkIndex(queries); return true; } /** * 插入或更新 * * @param t * @return */ public boolean insertOrUpdate(T t) { String id = ((EsBaseBean) t).getId(); if (id == null) { id = UuidHelper.getRandomUUID(); ((EsBaseBean) t).setId(id); } try { IndexQuery indexQuery = new IndexQueryBuilder().withId(id).withObject(t).build(); elasticsearchTemplate.index(indexQuery); return true; } catch (Exception e) { logger.error("insert or update user info error.", e); return false; } } /** * 删除 * * @param id * @return */ public boolean deleteById(String id) { try { elasticsearchTemplate.delete(getEntityClass(), id); return true; } catch (Exception e) { logger.error("delete " + getEntityClass() + " by id " + id + " error.", e); return false; } } /** * 删除ids * @param idList * @return */ @Override public boolean deleteByIds(List<String> idList) { try { CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria()); criteriaQuery.setIds(idList); elasticsearchTemplate.delete(criteriaQuery, getEntityClass()); return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 根据条件查询 * @param filedContentMap 不能为null * @return */ public boolean deleteByQuery(Map<String,Object> filedContentMap) { try { DeleteQuery dq = new DeleteQuery(); BoolQueryBuilder qb=QueryBuilders. boolQuery(); if(filedContentMap!=null) for (String key : filedContentMap.keySet()) {//字段查询 qb.must(QueryBuilders.matchQuery(key,filedContentMap.get(key))); } dq.setQuery(qb);; elasticsearchTemplate.delete(dq, getEntityClass());; return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 检查健康状态 * * @return */ public boolean ping() { try { ActionFuture<ClusterHealthResponse> health = esClient.admin() .cluster().health(new ClusterHealthRequest()); ClusterHealthStatus status = health.actionGet().getStatus(); if (status.value() == ClusterHealthStatus.RED.value()) { throw new RuntimeException( "elasticsearch cluster health status is red."); } return true; } catch (Exception e) { logger.error("ping elasticsearch error.", e); return false; } } /** * 条件查询 * * @param searchfields * 查询字段 * @param filedContentMap * 字段和查询内容 * @param sortField * 排序 字段 * @param order * 排序 * @param from * @param size * @return */ @Override public BasePage<T> queryPage(Map<String,Object> filedContentMap, final List<String> heightFields, String sortField, SortOrder order, BasePage<T>basePage) { Field[] hfields=new Field[0]; if(heightFields!=null) { hfields = new Field[heightFields.size()]; for (int i = 0; i < heightFields.size(); i++) { hfields[i] = new HighlightBuilder.Field(heightFields.get(i)).preTags("<em style='color:red'>").postTags("</em>").fragmentSize(250); } } NativeSearchQueryBuilder nsb = new NativeSearchQueryBuilder().withHighlightFields(hfields);//高亮字段 if (sortField != null && order != null)//排序 nsb.withSort(new FieldSortBuilder(sortField).ignoreUnmapped(true).order(order)); if (basePage != null)//分页 nsb.withPageable(new PageRequest(basePage.getPageNo(), basePage.getPageSize())); BoolQueryBuilder qb=QueryBuilders. boolQuery(); for (String key : filedContentMap.keySet()) {//字段查询 qb.must(QueryBuilders.matchQuery(key,filedContentMap.get(key))); } //userKey=78e48b85e94911e0d285f4eec990d556 //fa6e9c5bb24a21807c59e5fd3b609e12 nsb.withQuery(qb); SearchQuery searchQuery = nsb.build();//查询建立 Page<T> page = null; if (heightFields!=null&&heightFields.size() > 0) {//如果设置高亮 page = elasticsearchTemplate.queryForPage(searchQuery, getEntityClass(), new SearchResultMapper() { @SuppressWarnings("unchecked") @Override public <T> Page<T> mapResults(SearchResponse response,Class<T> clazz, Pageable pageable) { List<T> chunk = new ArrayList<T>(); for (SearchHit searchHit : response.getHits()) { if (response.getHits().getHits().length <= 0) { return null; } Map<String, Object> entityMap = searchHit.getSource(); for (String highName : heightFields) { Text text[]=searchHit.getHighlightFields().get(highName).fragments(); if(text.length>0) { String highValue = searchHit.getHighlightFields().get(highName).fragments()[0].toString(); entityMap.put(highName, highValue); } } chunk.add((T) PropertyHelper.getFansheObj( getEntityClass(), entityMap)); } if (chunk.size() > 0) { return new PageImpl<T>((List<T>) chunk); } return new PageImpl<T>(new ArrayList<T>()); } }); } else//如果不设置高亮 { logger.info("#################"+qb.toString()); page = elasticsearchTemplate.queryForPage(searchQuery,getEntityClass()); } // List<T> ts = page.getContent(); basePage.setTotalRecord(page.getTotalElements()); basePage.setResults(page.getContent()); return basePage; } @Override public List<T> queryList(Map<String, Object> filedContentMap,final List<String> heightFields, String sortField, SortOrder order) { Field[] hfields=new Field[0]; if(heightFields!=null) { hfields = new Field[heightFields.size()]; for (int i = 0; i < heightFields.size(); i++) { //String o="{\"abc\" : \"[abc]\"}"; hfields[i] = new HighlightBuilder.Field(heightFields.get(i)).preTags("<em>").postTags("</em>").fragmentSize(250); } } NativeSearchQueryBuilder nsb = new NativeSearchQueryBuilder().withHighlightFields(hfields);//高亮字段 if (sortField != null && order != null)//排序 nsb.withSort(new FieldSortBuilder(sortField).ignoreUnmapped(true).order(order)); BoolQueryBuilder qb=QueryBuilders. boolQuery(); for (String key : filedContentMap.keySet()) {//字段查询 qb.must(QueryBuilders.matchQuery(key,filedContentMap.get(key))); } nsb.withQuery(qb); SearchQuery searchQuery = nsb.build();//查询建立 Page<T> page = null; if (heightFields!=null&&heightFields.size() > 0) {//如果设置高亮 page = elasticsearchTemplate.queryForPage(searchQuery, getEntityClass(), new SearchResultMapper() { @SuppressWarnings("unchecked") @Override public <T> Page<T> mapResults(SearchResponse response,Class<T> clazz, Pageable pageable) { List<T> chunk = new ArrayList<T>(); for (SearchHit searchHit : response.getHits()) { if (response.getHits().getHits().length <= 0) { return null; } Map<String, Object> entityMap = searchHit.getSource(); for (String highName : heightFields) { String highValue = searchHit.getHighlightFields().get(highName).fragments()[0].toString(); entityMap.put(highName, highValue); } chunk.add((T) PropertyHelper.getFansheObj(getEntityClass(), entityMap)); } if (chunk.size() > 0) { return new PageImpl<T>((List<T>) chunk); } return null; } }); } else//如果不设置高亮 page = elasticsearchTemplate.queryForPage(searchQuery,getEntityClass()); return page.getContent(); } /** * 本类查询 * * @param id * @return */ public T queryById(String id) { StringQuery stringQuery = new StringQuery("id=" + id); T t = elasticsearchTemplate.queryForObject(stringQuery, getEntityClass()); return t; } public ElasticsearchTemplate getElasticsearchTemplate() { return elasticsearchTemplate; } public Client getEsClient() { return esClient; } /** * 得到类型 * * @return */ public abstract Class<T> getEntityClass(); /** * 添加各自类的影射 */ public abstract void putClassMapping(); }

优秀的个人博客,低调大师

elasticsearch 常见操作

package com.topwalk.analysis.es.operation.impl; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.concurrent.ExecutionException; import org.apache.log4j.Logger; import org.elasticsearch.action.admin.indices.create.CreateIndexRequest; import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest; import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest; import org.elasticsearch.action.admin.indices.mapping.put.PutMappingResponse; import org.elasticsearch.action.bulk.BulkProcessor; import org.elasticsearch.action.bulk.BulkProcessor.Listener; import org.elasticsearch.action.bulk.BulkRequest; import org.elasticsearch.action.bulk.BulkRequestBuilder; import org.elasticsearch.action.bulk.BulkResponse; import org.elasticsearch.action.count.CountRequestBuilder; import org.elasticsearch.action.count.CountResponse; import org.elasticsearch.action.delete.DeleteResponse; import org.elasticsearch.action.deletebyquery.DeleteByQueryRequestBuilder; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchType; import org.elasticsearch.action.update.UpdateRequest; import org.elasticsearch.action.update.UpdateResponse; import org.elasticsearch.client.Client; import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.metadata.IndexMetaData; import org.elasticsearch.cluster.metadata.MappingMetaData; import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.indices.IndexMissingException; import org.elasticsearch.script.ScriptService; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.SearchHits; import org.elasticsearch.search.aggregations.AbstractAggregationBuilder; import org.elasticsearch.search.aggregations.AggregationBuilders; import org.elasticsearch.search.aggregations.bucket.MultiBucketsAggregation; import org.elasticsearch.search.aggregations.bucket.histogram.DateHistogram; import org.elasticsearch.search.aggregations.bucket.histogram.Histogram; import org.elasticsearch.search.aggregations.bucket.terms.Terms; import org.elasticsearch.search.aggregations.metrics.stats.Stats; import org.elasticsearch.search.aggregations.metrics.sum.Sum; import org.elasticsearch.search.sort.SortOrder; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.topwalk.analysis.es.configuration.EsAggregation; import com.topwalk.analysis.es.configuration.EsAggregationParams; import com.topwalk.analysis.es.configuration.EsQueryParam; import com.topwalk.analysis.es.configuration.LogicOperator; import com.topwalk.analysis.es.configuration.Operator; import com.topwalk.analysis.es.configuration.Pager; import com.topwalk.analysis.es.factory.EsClient; import com.topwalk.analysis.es.operation.intf.EsService; public class EsServiceImpl implements EsService{ private Logger logger = Logger.getLogger(EsServiceImpl.class); @Override public boolean indexDataById(Client client, String index, String type, String id, String data) { // TODO Auto-generated method stub IndexResponse response = null; try { response = client.prepareIndex(index, type, id).setSource(data).execute().actionGet(); } catch (Exception e) { e.printStackTrace(); return false; } return response.isCreated(); } @Override public boolean bulkindexData(Client client, String index, String type, String data) { // TODO Auto-generated method stub BulkRequestBuilder bulkRequest = client.prepareBulk(); JSONArray arry = JSON.parseArray(data); for(int i = 0; i < arry.size(); i++) { JSONObject jobj = JSON.parseObject(arry.getString(i)); if(jobj.containsKey("_id")) { String _id = jobj.getString("_id"); jobj.remove("_id"); bulkRequest.add(client.prepareIndex(index, type, _id).setSource(arry.getString(i)) ); } else { bulkRequest.add(client.prepareIndex(index, type).setSource(arry.getString(i)) ); } } BulkResponse bulkResponse = bulkRequest.execute().actionGet(); if(bulkResponse.hasFailures()) { logger.error("bulkinsert fail message...." + bulkResponse.buildFailureMessage()); return false; } else { return true; } } @Override public boolean bulkupdateData(Client client, String index, String type, String data, List<EsQueryParam> params) { // TODO Auto-generated method stub List<String> types = new ArrayList<String>(); types.add(type); EsServiceImpl esimpl = new EsServiceImpl(); Pager page = new Pager(); page.setFrom(0); int count = esimpl.getCountByFields(client, index, types, params); page.setNum(count); List<String> ids = esimpl.getIdByFields(client, index, type, params, page); if(ids.size() == 0 || count == 0) { return false; } Map<String, Object> fieldValue = (Map<String, Object>) JSON.parse(data); for (String id : ids ) { esimpl.updateIndexById(client, index, type, id, fieldValue); } return true; } @Override public boolean indexData(Client client, String index, String type, String data) { // TODO Auto-generated method stub IndexResponse response = null; try { response = client.prepareIndex(index, type).setSource(data).execute().actionGet(); } catch (Exception e) { e.printStackTrace(); return false; } return response.isCreated(); } @Override public String getIndexById(Client client, String index, String type, String id) { // TODO Auto-generated method stub GetResponse response = null ; String result = null; try { response = client.prepareGet(index, type, id).execute().actionGet(); result = response.getSourceAsString(); } catch (Exception e ) { e.printStackTrace(); } return result; } @Override public boolean isIndexExists(Client client, String index, String type, String id) { // TODO Auto-generated method stub GetResponse response = null ; boolean result = false; try { response = client.prepareGet(index, type, id).execute().actionGet(); result = response.isExists(); } catch (Exception e ) { e.printStackTrace(); return false; } return result; } @Override public boolean delIndexById(Client client, String index, String type, String id) { // TODO Auto-generated method stub DeleteResponse response = null ; boolean result = false; try { response = client.prepareDelete(index, type, id).execute().actionGet(); result = response.isFound(); } catch (Exception e ) { e.printStackTrace(); return result; } return result; } @Override public boolean delIndexByFields(Client client, String index, String type, List<EsQueryParam> params) { // TODO Auto-generated method stub BoolQueryBuilder db = QueryBuilders.boolQuery(); try { DeleteByQueryRequestBuilder dbq = client.prepareDeleteByQuery(index).setTypes(type); db = getQueryBuilder(params); dbq.setQuery(db); dbq.execute().actionGet(); } catch (Exception e ) { e.printStackTrace(); return true; } return true; } @Override public boolean updateIndexById(Client client, String index, String type, String id, Map<String, Object> fieldValue) { UpdateResponse response = null; UpdateRequest updateRequest = new UpdateRequest(); updateRequest.index(index); if(type != null) { updateRequest.type(type); } updateRequest.id(id); updateRequest.doc(fieldValue); updateRequest.retryOnConflict(5); try { response = client.update(updateRequest).get(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); return false; } catch (ExecutionException e) { // TODO Auto-generated catch block e.printStackTrace(); return false; } return true; } @Override public boolean addFieldToDoc(Client client, String index, String type, String id, Map<String, Object> fieldValue) { // TODO Auto-generated method stub Iterator<String> iter = fieldValue.keySet().iterator(); boolean isExist = false; while (iter.hasNext()) { String key = iter.next(); isExist = isFieldExist(client, index, type, id, key); if(isExist) { try { throw new Exception("the key [" + key + "] is exist!"); } catch (Exception e) { e.printStackTrace(); return false; } } } UpdateResponse response = null; UpdateRequest updateRequest = new UpdateRequest(); updateRequest.index(index).type(type).id(id); updateRequest.doc(fieldValue); try { response = client.update(updateRequest).get(); } catch (InterruptedException e) { e.printStackTrace(); return false; } catch (ExecutionException e) { e.printStackTrace(); return false; } return true; } @Override public boolean removeieldFromDoc(Client client, String index, String type, String id, String field) { boolean isExist = false; isExist = isFieldExist( client, index, type, id, field); if(! isExist) { try { throw new Exception("the key [" + field + "] is not exist!"); } catch (Exception e) { e.printStackTrace(); return false; } } try { client.prepareUpdate(index, type, id).setScript("ctx._source.remove(\"" + field+ "\")", ScriptService.ScriptType.INLINE).execute().actionGet(); } catch (Exception e) { e.printStackTrace(); return false; } return true; } public List<String> getIdByFields(Client client, String index, String type, List<EsQueryParam> params, Pager pager) { BoolQueryBuilder db = QueryBuilders.boolQuery(); List<String> list= new ArrayList<String>(); SearchRequestBuilder searchRequest = null; db = getQueryBuilder(params); if (params != null && params.size() > 0 ) { searchRequest = client.prepareSearch(index).setQuery(db).setTypes(type); } else { searchRequest = client.prepareSearch(index).setQuery(QueryBuilders.matchAllQuery()).setTypes(type); } if(pager != null && pager.getFrom() >= 0 && pager.getNum() > 0 ) { searchRequest.setFrom(pager.getFrom()).setSize(pager.getNum()); } else if(pager != null && pager.getSortField() != null && pager.getSortValue().equals( "ASC")) { searchRequest.addSort(pager.getSortField(), SortOrder.ASC); } else if(pager != null && pager.getSortField() != null && pager.getSortValue().equals("desc")) { searchRequest.addSort(pager.getSortField(), SortOrder.DESC); } SearchResponse response = searchRequest.execute().actionGet(); for(SearchHit hit : response.getHits()) { list.add(hit.getId()); } return list; } @Override public List<String> getIndexByFields(Client client, String index, List<String> types, List<EsQueryParam> params, Pager pager) { BoolQueryBuilder db = QueryBuilders.boolQuery(); List<String> list= new ArrayList<String>(); try { SearchRequestBuilder searchRequest = null; if (params != null && params.size() > 0 ) { db = getQueryBuilder(params); searchRequest = client.prepareSearch(index).setQuery(db); } else { searchRequest = client.prepareSearch(index).setQuery(QueryBuilders.matchAllQuery()); } if(pager != null && pager.getFrom() >= 0 && pager.getNum() > 0 ) { searchRequest.setFrom(pager.getFrom()).setSize(pager.getNum()); } else if(pager != null && pager.getSortField() != null && pager.getSortValue().equals("asc")) { searchRequest.addSort(pager.getSortField(), SortOrder.ASC); } else if(pager != null && pager.getSortField() != null && pager.getSortValue().equals("desc")) { searchRequest.addSort(pager.getSortField(), SortOrder.DESC); } if(types != null && types.size() > 0) { String[] a = new String[types.size()]; searchRequest.setTypes(types.toArray(a)); } SearchResponse response = searchRequest.execute().actionGet(); if(response.getHits().totalHits() > 0) { for(SearchHit hit : response.getHits()) { list.add(JSON.toJSONString(hit.getSource())); } } } catch (Exception e) { e.printStackTrace(); } return list; } @Override public List<String> scrollSearch(Client client, String index, String type, List<EsQueryParam> params, Pager pager) { BoolQueryBuilder db = QueryBuilders.boolQuery(); List<String> list= new ArrayList<String>(); try { SearchRequestBuilder searchRequest = null; if (params != null && params.size() > 0 ) { db = getQueryBuilder(params); searchRequest = client.prepareSearch(index).setSearchType(SearchType.SCAN).setScroll(new TimeValue(60000)).setQuery(db); } else { searchRequest = client.prepareSearch(index).setSearchType(SearchType.SCAN).setScroll(new TimeValue(60000)).setQuery(QueryBuilders.matchAllQuery()); } if (type != null) { searchRequest.setTypes(type); } if(pager != null) { searchRequest.setSize(pager.getNum()); } SearchResponse scrollResp = searchRequest.execute().actionGet(); while (true) { scrollResp = client.prepareSearchScroll(scrollResp.getScrollId()).setScroll(new TimeValue(60000)).execute().actionGet(); if(scrollResp.getHits().getHits().length == 0) { break; } for(SearchHit hit: scrollResp.getHits()) { list.add(hit.getSourceAsString()); } } } catch(Exception e) { e.printStackTrace(); } return list; } @Override public boolean reindex(Client client, String index, String type,String newindex, String newtype, List<EsQueryParam> params) { BoolQueryBuilder db = QueryBuilders.boolQuery(); try { SearchRequestBuilder searchRequest = null; if (params != null && params.size() > 0 ) { db = getQueryBuilder(params); searchRequest = client.prepareSearch(index).setSearchType(SearchType.SCAN).setScroll(new TimeValue(60000)).setQuery(db); } else { searchRequest = client.prepareSearch(index).setSearchType(SearchType.SCAN).setScroll(new TimeValue(60000)).setQuery(QueryBuilders.matchAllQuery()); } if (type != null) { searchRequest.setTypes(type); } SearchResponse scrollResp = searchRequest.execute().actionGet(); BulkProcessor bulkProcessor = BulkProcessor.builder(client, createBulkProcessorListener()) .setBulkActions(10000) .setFlushInterval(TimeValue.timeValueSeconds(5)).build(); while (true) { scrollResp = client.prepareSearchScroll(scrollResp.getScrollId()).setScroll(new TimeValue(60000)).execute().actionGet(); if(scrollResp.getHits().getHits().length == 0) { bulkProcessor.close(); break; } for(SearchHit hit: scrollResp.getHits()) { IndexRequest request = new IndexRequest(newindex, newtype, hit.id()); request.source(hit.getSourceAsString()); bulkProcessor.add(request); } bulkProcessor.flush(); } } catch(Exception e) { e.printStackTrace(); return false; } return true; } public Map<String, Object> getMappings(Client client, String index, String type) { Map<String, Object> result = null; IndexMetaData imd = null; try { ClusterState cs = client.admin() .cluster() .prepareState() .setIndices(index) .execute() .actionGet() .getState(); imd = cs.getMetaData().index(index); MappingMetaData mdd = imd.mapping(type); result = mdd.getSourceAsMap(); } catch (IndexMissingException | IOException e) { } return result; } public Listener createBulkProcessorListener() { return new BulkProcessor.Listener() { @Override public void beforeBulk(long executionId, BulkRequest request) { // TODO Auto-generated method stub } @Override public void afterBulk(long executionId, BulkRequest request, Throwable failure) { // TODO Auto-generated method stub } @Override public void afterBulk(long executionId, BulkRequest request, BulkResponse response) { // TODO Auto-generated method stub } }; } @Override public int getCountByFields(Client client, String index, List<String> types, List<EsQueryParam> params) { CountResponse response = null; CountRequestBuilder countBuilder = null; BoolQueryBuilder db = null; try { db = getQueryBuilder(params); countBuilder = client.prepareCount(index); if(types != null && types.size() > 0) { String[] a = new String[types.size()]; countBuilder.setTypes(types.toArray(a)); } if (params != null && params.size() > 0) { response = countBuilder.setQuery(db).execute().actionGet(); } else { response = countBuilder.setQuery(QueryBuilders.matchAllQuery()).execute().actionGet(); } } catch (Exception e) { e.printStackTrace(); } return (int) response.getCount(); } //check field isexist public boolean isFieldExist(Client client, String index, String type, String id, String key) { GetResponse response = null ; boolean result = false; try { response = client.prepareGet(index, type, id).execute().actionGet(); result = JSON.parseObject(response.getSourceAsString()).containsKey(key); } catch (Exception e ) { e.printStackTrace(); } return result; } @Override public int getTermsCountByAgg(Client client, String index, List<String> types, List<EsQueryParam> params, List<EsAggregationParams> aggList, Pager page) { BoolQueryBuilder db = null; if(params != null) { db = getQueryBuilder(params); } List<Map<String, String>> result = new ArrayList<Map<String, String>>(); AbstractAggregationBuilder parentBuilder = null; for (int i = aggList.size()-1; i >= 0; i--) { EsAggregationParams aggParams = aggList.get(i); if(i == aggList.size()-1) { if (aggParams.getEsAggregation() == EsAggregation.TERM) { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).field(aggParams.getField()).size(page.getNum()); } } else { if (aggParams.getEsAggregation() == EsAggregation.TERM) { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).field(aggParams.getField()).size(page.getNum()).subAggregation(parentBuilder); } } } SearchRequestBuilder requestBuilder = client.prepareSearch(index); if(types != null && types.size() > 0) { String[] a = new String[types.size()]; requestBuilder.setTypes(types.toArray(a)); } requestBuilder.addAggregation(parentBuilder); if(db != null) { requestBuilder.setQuery(db); } SearchResponse sr = requestBuilder.execute().actionGet(); Terms t = sr.getAggregations().get(aggList.get(0).getAggName()); Iterator< ? extends MultiBucketsAggregation.Bucket > topBucket = null; topBucket = t.getBuckets().iterator(); result = getMap(topBucket, aggList, 0, result, null); return result.size(); } @Override public List<Map<String, String>> AggregationByFields(Client client, String index, List<String> types, List<EsQueryParam> params, List<EsAggregationParams> aggList) { BoolQueryBuilder db = null; if(params != null && params.size() > 0) { db = getQueryBuilder(params); } List<Map<String, String>> result = new ArrayList<Map<String, String>>(); AbstractAggregationBuilder parentBuilder = null; for (int i = aggList.size()-1; i >= 0; i--) { EsAggregationParams aggParams = aggList.get(i); if(i == aggList.size()-1) { if (aggParams.getEsAggregation() == EsAggregation.STATS) { parentBuilder = AggregationBuilders.stats( aggParams.getAggName()) .field(aggParams.getField()); } else if (aggParams.getEsAggregation() == EsAggregation.DATE_HISTOGRAM) { DateHistogram.Order order = null; if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("asc")) { order = DateHistogram.Order.KEY_ASC; } else if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("desc") ) { order = DateHistogram.Order.KEY_DESC; }else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("asc") ) { order = DateHistogram.Order.COUNT_ASC; } else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("desc") ){ order = DateHistogram.Order.COUNT_DESC; } parentBuilder = AggregationBuilders.dateHistogram(aggParams.getAggName()).field(aggParams.getField()).interval(aggParams.getDateInterval()).order(order); } else if (aggParams.getEsAggregation() == EsAggregation.TERM) { Terms.Order order = null; if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("asc")) { order = Terms.Order.term(true); } else if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("desc") ) { order = Terms.Order.term(false); }else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("asc") ) { order = Terms.Order.count(true); } else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("desc") ){ order = Terms.Order.count(false); } if( aggParams.isKeyOrder() == null && aggParams.isValOrder() == null) { if (aggParams.getAggSize() == 0) { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).field(aggParams.getField()).size(aggParams.getAggSize()); } else { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).field(aggParams.getField()).size(aggParams.getAggSize()); } } else { if (aggParams.getAggSize() == 0) { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).field(aggParams.getField()).size(aggParams.getAggSize()).order(order); } else { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).field(aggParams.getField()).size(aggParams.getAggSize()).order(order); } } } else if (aggParams.getEsAggregation() == EsAggregation.TERM_SCRIPTS) { Terms.Order order = null; if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("asc")) { order = Terms.Order.term(true); } else if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("desc") ) { order = Terms.Order.term(false); }else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("asc") ) { order = Terms.Order.count(true); } else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("desc") ){ order = Terms.Order.count(false); } if( aggParams.isKeyOrder() == null || aggParams.isValOrder() == null) { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).script(aggParams.getField()); } else { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).script(aggParams.getField()).order(order); } } else if (aggParams.getEsAggregation() == EsAggregation.HISTOGRAM) { parentBuilder = AggregationBuilders.histogram(aggParams.getAggName()).field(aggParams.getField()).interval(aggParams.getHisaggrateInterval()); } else if (aggParams.getEsAggregation() == EsAggregation.SUM) { parentBuilder = AggregationBuilders.sum(aggParams.getAggName()).field(aggParams.getField()); } } else { if (aggParams.getEsAggregation() == EsAggregation.TERM) { Terms.Order order = null; if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("asc")) { order = Terms.Order.term(true); } else if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("desc") ) { order = Terms.Order.term(false); }else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("asc") ) { order = Terms.Order.count(true); } else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("desc") ){ order = Terms.Order.count(false); } if( aggParams.isKeyOrder() == null && aggParams.isValOrder() == null) { if (aggParams.getAggSize() == 0 ) { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).field(aggParams.getField()).size(aggParams.getAggSize()).subAggregation(parentBuilder); } else { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).field(aggParams.getField()).size(aggParams.getAggSize()).subAggregation(parentBuilder); } } else { if (aggParams.getAggSize() == 0 ) { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).field(aggParams.getField()).order(order).size(aggParams.getAggSize()).subAggregation(parentBuilder); } else { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).field(aggParams.getField()).order(order).size(aggParams.getAggSize()).subAggregation(parentBuilder); } } } else if (aggParams.getEsAggregation() == EsAggregation.TERM_SCRIPTS) { Terms.Order order = null; if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("asc")) { order = Terms.Order.term(true); } else if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("desc") ) { order = Terms.Order.term(false); }else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("asc") ) { order = Terms.Order.count(true); } else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("desc") ){ order = Terms.Order.count(false); } if( aggParams.isKeyOrder() == null || aggParams.isValOrder() == null) { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).script(aggParams.getField()).subAggregation(parentBuilder); } else { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).script(aggParams.getField()).order(order).subAggregation(parentBuilder); } } else if (aggParams.getEsAggregation() == EsAggregation.DATE_HISTOGRAM) { DateHistogram.Order order = null; if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("asc")) { order = DateHistogram.Order.KEY_ASC; } else if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("desc") ) { order = DateHistogram.Order.KEY_DESC; }else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("asc") ) { order = DateHistogram.Order.COUNT_ASC; } else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("desc") ){ order = DateHistogram.Order.COUNT_DESC; } parentBuilder = AggregationBuilders.dateHistogram(aggParams.getAggName()).field(aggParams.getField()).interval(aggParams.getDateInterval()).subAggregation(parentBuilder).order(order); } else if (aggParams.getEsAggregation() == EsAggregation.HISTOGRAM) { parentBuilder = AggregationBuilders.histogram(aggParams.getAggName()).field(aggParams.getField()).interval(aggParams.getHisaggrateInterval()).subAggregation(parentBuilder); } } } SearchRequestBuilder requestBuilder = client.prepareSearch(index); if(types != null && types.size() > 0) { String[] a = new String[types.size()]; requestBuilder.setTypes(types.toArray(a)); } requestBuilder.addAggregation(parentBuilder); if(db != null) { requestBuilder.setQuery(db); } logger.debug(requestBuilder.toString()); SearchResponse sr = requestBuilder.execute().actionGet(); Iterator< ? extends MultiBucketsAggregation.Bucket > topBucket = null; if(aggList.get(0).getEsAggregation() == EsAggregation.DATE_HISTOGRAM) { DateHistogram agg = sr.getAggregations().get(aggList.get(0).getAggName()); topBucket = agg.getBuckets().iterator(); } else if (aggList.get(0).getEsAggregation() == EsAggregation.TERM ||aggList.get(0).getEsAggregation() == EsAggregation.TERM_SCRIPTS ) { Terms t = sr.getAggregations().get(aggList.get(0).getAggName()); topBucket = t.getBuckets().iterator(); } else if (aggList.get(0).getEsAggregation() == EsAggregation.HISTOGRAM) { Histogram agg = sr.getAggregations().get(aggList.get(0).getAggName()); topBucket = agg.getBuckets().iterator(); } else if (aggList.get(0).getEsAggregation() == EsAggregation.SUM) { Sum agg = sr.getAggregations().get(aggList.get(0).getAggName()); Map<String, String> sumresult = new HashMap<String, String>(); sumresult.put(agg.getName(), String.valueOf(agg.getValue())); result.add(sumresult); return result; } else if(aggList.get(0).getEsAggregation() == EsAggregation.STATS) { Stats stats = sr.getAggregations().get(aggList.get(0).getAggName()); Map<String, String> statsresult = new HashMap<String, String>(); statsresult.put("count", String.valueOf(stats.getCount())); statsresult.put("avg", String.valueOf(stats.getAvg())); statsresult.put("max", String.valueOf(stats.getMax())); statsresult.put("min", String.valueOf(stats.getMin())); statsresult.put("sum", String.valueOf(stats.getSum())); result.add(statsresult); return result; } Map<String, String> map = new HashMap<String, String>(); result = getMap(topBucket, aggList, 0, result, map); return result; } @Override public SearchResponse getResponseByAggregationField(Client client, String index, List<String> types, List<EsQueryParam> params, List<EsAggregationParams> aggList) { BoolQueryBuilder db = null; if(params != null && params.size() > 0) { db = getQueryBuilder(params); } List<Map<String, String>> result = new ArrayList<Map<String, String>>(); AbstractAggregationBuilder parentBuilder = null; for (int i = aggList.size()-1; i >= 0; i--) { EsAggregationParams aggParams = aggList.get(i); if(i == aggList.size()-1) { if (aggParams.getEsAggregation() == EsAggregation.STATS) { parentBuilder = AggregationBuilders.stats( aggParams.getAggName()) .field(aggParams.getField()); } else if (aggParams.getEsAggregation() == EsAggregation.DATE_HISTOGRAM) { DateHistogram.Order order = null; if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("asc")) { order = DateHistogram.Order.KEY_ASC; } else if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("desc") ) { order = DateHistogram.Order.KEY_DESC; }else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("asc") ) { order = DateHistogram.Order.COUNT_ASC; } else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("desc") ){ order = DateHistogram.Order.COUNT_DESC; } parentBuilder = AggregationBuilders.dateHistogram(aggParams.getAggName()).field(aggParams.getField()).interval(aggParams.getDateInterval()).order(order); } else if (aggParams.getEsAggregation() == EsAggregation.TERM) { Terms.Order order = null; if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("asc")) { order = Terms.Order.term(true); } else if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("desc") ) { order = Terms.Order.term(false); }else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("asc") ) { order = Terms.Order.count(true); } else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("desc") ){ order = Terms.Order.count(false); } if( aggParams.isKeyOrder() == null && aggParams.isValOrder() == null) { if (aggParams.getAggSize() == 0) { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).field(aggParams.getField()).size(aggParams.getAggSize()); } else { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).field(aggParams.getField()).size(aggParams.getAggSize()); } } else { if (aggParams.getAggSize() == 0) { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).field(aggParams.getField()).size(aggParams.getAggSize()).order(order); } else { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).field(aggParams.getField()).size(aggParams.getAggSize()).order(order); } } } else if (aggParams.getEsAggregation() == EsAggregation.TERM_SCRIPTS) { Terms.Order order = null; if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("asc")) { order = Terms.Order.term(true); } else if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("desc") ) { order = Terms.Order.term(false); }else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("asc") ) { order = Terms.Order.count(true); } else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("desc") ){ order = Terms.Order.count(false); } if( aggParams.isKeyOrder() == null || aggParams.isValOrder() == null) { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).script(aggParams.getField()); } else { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).script(aggParams.getField()).order(order); } } else if (aggParams.getEsAggregation() == EsAggregation.HISTOGRAM) { parentBuilder = AggregationBuilders.histogram(aggParams.getAggName()).field(aggParams.getField()).interval(aggParams.getHisaggrateInterval()); } else if (aggParams.getEsAggregation() == EsAggregation.SUM) { parentBuilder = AggregationBuilders.sum(aggParams.getAggName()).field(aggParams.getField()); } else if (aggParams.getEsAggregation() == EsAggregation.SUM_SCRIPTS) { parentBuilder = AggregationBuilders.sum(aggParams.getAggName()).script(aggParams.getField()); } } else { if (aggParams.getEsAggregation() == EsAggregation.TERM) { Terms.Order order = null; if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("asc")) { order = Terms.Order.term(true); } else if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("desc") ) { order = Terms.Order.term(false); }else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("asc") ) { order = Terms.Order.count(true); } else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("desc") ){ order = Terms.Order.count(false); } if( aggParams.isKeyOrder() == null && aggParams.isValOrder() == null) { if (aggParams.getAggSize() == 0 ) { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).field(aggParams.getField()).size(aggParams.getAggSize()).subAggregation(parentBuilder); } else { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).field(aggParams.getField()).size(aggParams.getAggSize()).subAggregation(parentBuilder); } } else { if (aggParams.getAggSize() == 0 ) { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).field(aggParams.getField()).order(order).size(aggParams.getAggSize()).subAggregation(parentBuilder); } else { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).field(aggParams.getField()).order(order).size(aggParams.getAggSize()).subAggregation(parentBuilder); } } } else if (aggParams.getEsAggregation() == EsAggregation.TERM_SCRIPTS) { Terms.Order order = null; if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("asc")) { order = Terms.Order.term(true); } else if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("desc") ) { order = Terms.Order.term(false); }else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("asc") ) { order = Terms.Order.count(true); } else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("desc") ){ order = Terms.Order.count(false); } if( aggParams.isKeyOrder() == null || aggParams.isValOrder() == null) { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).script(aggParams.getField()).subAggregation(parentBuilder); } else { parentBuilder = AggregationBuilders.terms(aggParams.getAggName()).script(aggParams.getField()).order(order).subAggregation(parentBuilder); } } else if (aggParams.getEsAggregation() == EsAggregation.DATE_HISTOGRAM) { DateHistogram.Order order = null; if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("asc")) { order = DateHistogram.Order.KEY_ASC; } else if( aggParams.isKeyOrder() !=null && aggParams.isKeyOrder().equals("desc") ) { order = DateHistogram.Order.KEY_DESC; }else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("asc") ) { order = DateHistogram.Order.COUNT_ASC; } else if( aggParams.isValOrder() !=null && aggParams.isValOrder().equals("desc") ){ order = DateHistogram.Order.COUNT_DESC; } parentBuilder = AggregationBuilders.dateHistogram(aggParams.getAggName()).field(aggParams.getField()).interval(aggParams.getDateInterval()).subAggregation(parentBuilder).order(order); } else if (aggParams.getEsAggregation() == EsAggregation.HISTOGRAM) { parentBuilder = AggregationBuilders.histogram(aggParams.getAggName()).field(aggParams.getField()).interval(aggParams.getHisaggrateInterval()).subAggregation(parentBuilder); } } } SearchRequestBuilder requestBuilder = client.prepareSearch(index); if(types != null && types.size() > 0) { String[] a = new String[types.size()]; requestBuilder.setTypes(types.toArray(a)); } requestBuilder.addAggregation(parentBuilder); if(db != null) { requestBuilder.setQuery(db); } System.out.println(requestBuilder.toString()); SearchResponse sr = requestBuilder.execute().actionGet(); return sr; } public List<Map<String, String>> getMap(Iterator< ? extends MultiBucketsAggregation.Bucket > topBucket , List<EsAggregationParams> aggList, int level, List<Map<String, String>> result, Map<String, String> map) { if (aggList.size() ==1&& level == 0) { while(topBucket.hasNext()) { map = new HashMap<String, String>(); MultiBucketsAggregation.Bucket b3= topBucket.next(); if (aggList.get(0).getEsAggregation() == EsAggregation.TERM_SCRIPTS) { map.put( b3.getKey(), String.valueOf(b3.getDocCount()) ); } else { map.put(aggList.get(0).getField(), b3.getKey()); map.put("doc_count", String.valueOf(b3.getDocCount())); } result.add(map); } return result; } else { level ++; } if(level < aggList.size() && aggList.size() != 1) { while(topBucket.hasNext()) { Map<String, String> map2 = new HashMap<String, String>(); MultiBucketsAggregation.Bucket b2= topBucket.next(); map2.put(aggList.get(level-1).getField(), b2.getKey()); map2.put("doc_count" , String.valueOf(b2.getDocCount()) ); if(aggList.get(level).getEsAggregation() == EsAggregation.TERM || aggList.get(level).getEsAggregation() == EsAggregation.TERM_SCRIPTS) { Terms t = b2.getAggregations().get(aggList.get(level ).getAggName()); map2.put(aggList.get(level).getField(), b2.getKey()); getMap(t.getBuckets().iterator(), aggList, level, result, map2); } else if (aggList.get(level).getEsAggregation() == EsAggregation.STATS) { Stats stats = b2.getAggregations().get(aggList.get(level ).getAggName()); map2.put("count", String.valueOf(stats.getCount())); map2.put("sum", String.valueOf(stats.getSum())); map2.put("avg", String.valueOf(stats.getAvg())); map2.put("max", String.valueOf(stats.getMax())); map2.put("min", String.valueOf(stats.getMin())); result.add(map2); } else if (aggList.get(level).getEsAggregation() == EsAggregation.SUM) { Sum agg = b2.getAggregations().get(aggList.get(level).getAggName()); map2.put(aggList.get(level ).getField(), String.valueOf(agg.getValue())); result.add(map2); } else if (aggList.get(level).getEsAggregation() == EsAggregation.DATE_HISTOGRAM) { DateHistogram datehis = b2.getAggregations().get(aggList.get(level ).getAggName()); map2.put(aggList.get(level ).getField(), b2.getKey()); getMap( datehis.getBuckets().iterator(), aggList, level, result, map2); } else if (aggList.get(level).getEsAggregation() == EsAggregation.HISTOGRAM) { Histogram his = b2.getAggregations().get(aggList.get(level ).getAggName()); map2.put(aggList.get(level ).getField(), b2.getKey()); getMap( his.getBuckets().iterator(), aggList, level, result, map2); } } return result; } else { List<Map<String, String>> list = new ArrayList<Map<String, String>>(); //List<String> list = new ArrayList<String>(); while(topBucket.hasNext()) { Map<String, String> m = new HashMap<String, String>(); MultiBucketsAggregation.Bucket b3= topBucket.next(); m.put(aggList.get(level -1 ).getField(), b3.getKey()); m.put("doc_count", String.valueOf(b3.getDocCount())); list.add(m); } map.put(aggList.get(level -1 ).getField(), JSON.toJSONString(list)); result.add(map); return result; } } public BoolQueryBuilder getQueryBuilder(List<EsQueryParam> params) { BoolQueryBuilder db = null; if (params != null) { db = QueryBuilders.boolQuery(); for (EsQueryParam param : params) { if(param.getLogicOperator() == LogicOperator.AND && param.getOperator() == Operator.EQUAL) { db = db.must(QueryBuilders.matchQuery(param.getField(), param.getValue())); } else if(param.getLogicOperator() == LogicOperator.AND && param.getOperator() == Operator.LIKE) { db = db.must(QueryBuilders.wildcardQuery(param.getField(), param.getValue())); } else if(param.getLogicOperator() == LogicOperator.OR && param.getOperator() == Operator.LIKE) { db = db.should(QueryBuilders.wildcardQuery(param.getField(), param.getValue())); } else if(param.getLogicOperator() == LogicOperator.MUST_NOT && param.getOperator() == Operator.LIKE) { db = db.mustNot(QueryBuilders.wildcardQuery(param.getField(), param.getValue())); } else if(param.getLogicOperator() == LogicOperator.MUST_NOT && param.getOperator() == Operator.EQUAL) { db = db.mustNot(QueryBuilders.matchQuery(param.getField(), param.getValue())); } else if(param.getOperator() == Operator.GT) { db = db.must(QueryBuilders.rangeQuery(param.getField()).gt(param.getValue())); } else if(param.getOperator() == Operator.GTE) { db = db.must(QueryBuilders.rangeQuery(param.getField()).gte(param.getValue())); } else if(param.getOperator() == Operator.LT) { db = db.must(QueryBuilders.rangeQuery(param.getField()).lt(param.getValue())); } else if(param.getOperator() == Operator.LTE) { db = db.must(QueryBuilders.rangeQuery(param.getField()).lte(param.getValue())); } else if (param.getLogicOperator() == LogicOperator.OR) { db = db.should(QueryBuilders.matchQuery(param.getField(), param.getValue())); } else if (param.getLogicOperator() == LogicOperator.AND ) { db = db.must(QueryBuilders.matchQuery(param.getField(), param.getValue())); } else if (param.getOperator() == Operator.EQUAL ) { db = db.must(QueryBuilders.matchQuery(param.getField(), param.getValue())); } else if (param.getOperator() == Operator.NOTEQUAL ) { db = db.mustNot(QueryBuilders.matchQuery(param.getField(), param.getValue())); } else if(param.getOperator() == Operator.TERMS) { db = db.must(QueryBuilders.termsQuery(param.getField(), param.getTermsList()).minimumMatch(1)); } else if (param.getLogicOperator() == null &&param.getOperator() == null ) { db = db.must(QueryBuilders.matchQuery(param.getField(), param.getValue())); } } } return db; } @Override public boolean createType(Client client, String index, String type, String mapping) { // TODO Auto-generated method stub IndicesExistsRequest indexrequest = new IndicesExistsRequest(index); boolean exist = client.admin().indices().exists(indexrequest).actionGet().isExists(); if (! exist) { client.admin().indices().create(new CreateIndexRequest(index)).actionGet(); } PutMappingRequest putMappingRequest = new PutMappingRequest(index); putMappingRequest.type(type); putMappingRequest.source(mapping); PutMappingResponse putMappingResponse = client.admin().indices().putMapping(putMappingRequest).actionGet(); return putMappingResponse.isAcknowledged(); } @Override public boolean isIndexExistsByFieldVal(Client client, String index, String type, String field, String fieldVal) { // TODO Auto-generated method stub SearchRequestBuilder searchRequest = null ; boolean result = false; try { searchRequest = client.prepareSearch(index).setTypes(type).setQuery(QueryBuilders.matchQuery(field, fieldVal)); SearchResponse response = searchRequest.execute().actionGet(); result = (response.getHits().hits().length > 0) ? true : false; } catch (Exception e ) { e.printStackTrace(); return false; } return result; } @Override public SearchHits termsQuery(Client client, String index, String type,String field,List<String> terms) { SearchRequestBuilder searchRequest = null ; QueryBuilder qb = QueryBuilders.termsQuery(field, terms).minimumMatch(1); searchRequest = client.prepareSearch(index).setTypes(type).setQuery(qb).setSize(1000000000); SearchResponse response = searchRequest.execute().actionGet(); return response.getHits(); //后续优化 } } 捐助开发者 在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。 谢谢您的赞助,我会做的更好!

优秀的个人博客,低调大师

docker基本操作

保存自己的image: #docker commit -m "image msg" -a "作者信息" 0b2616b0e5a8 repository:tag_msg //用来创建镜像的容器的 ID;最后指定目标镜像的仓库名和 tag 信息 #4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c 查看保存的image: #docker images 删除image #docker rmi ubuntu:12.04 #在此之前一般使用docker ps -a 检查一下是否还有依赖于该image的container,执行docker rm container_id 删除未打标签的image: #docker rmi $(docker images -q -f "dangling=true") #同上简称是否存在依赖的container #docker rmi $(docker images --quit --filter "dangling=true") https://yeasy.gitbooks.io/docker_practice/content/container/index.html

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

用户登录
用户注册