Elasticsearch 常用操作备忘
Elasticsearch 常用操作备忘
public Map<String, Object> getByEsId(String idKey, String idVal, String sourceIndex) {
SearchRequest esRequest = new SearchRequest(sourceIndex + "*");
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(
QueryBuilders.boolQuery().must(QueryBuilders.termQuery(idKey, idVal))
);
sourceBuilder.size(1);
sourceBuilder.from(0);
esRequest.source(sourceBuilder);
SearchResponse esResponse = esSearch.searchByRequest(esRequest);
SearchHits searchHits = esResponse.getHits();
SearchHit[] hits = searchHits.getHits();
logger.info("jw getByEsId over hits:{}", hits.length);
if (hits.length > 0) {
SearchHit hit = hits[0];
return hit.getSourceAsMap();
} else {
logger.info("getByEsId event can not find");
return null;
}
}
public void updateById(String id, String idVal, String sourceIndex, Map<String, Object> params) {
QueryBuilder query = QueryBuilders.termQuery(id, idVal);
StringBuilder sb = new StringBuilder();
Map<String, Object> scriptParams = new HashMap<>();
for (Map.Entry<String, Object> entry : params.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
boolean keyIsNotNull = key != null && !key.isEmpty() && !"null".equals(key);
boolean valueIsNotNull = value != null && !"null".equals(value);
if (keyIsNotNull && valueIsNotNull) {
sb.append("ctx._source.").append(key).append("=params['").append(key).append("']; ");
scriptParams.put(key, value);
}
}
// 创建更新脚本
Script script = new Script(
ScriptType.INLINE,
"painless",
sb.toString(),
scriptParams
);
esOperation.updateByQuery(sourceIndex + "*", query, script);
}
License:
CC BY 4.0