Elasticsearch API模糊查询简单应用
es 调用api,一点小心得
在业务逻辑中,查询数据库方向会使用like去查询某些字段,但是like查询不走索引所以会增加负载,在此处优化使用es解决当前问题,首先将数据库表现有数据存入es中
代码块
直接上代码:
/**声明es连接*/
TransportClient client = ESTransportClient.getInstance();
SearchRequestBuilder requestBuilder = client.prepareSearch("fk_caibo").setTypes("yt_user");
// 声明where条件
BoolQueryBuilder qbs = QueryBuilders.boolQuery();
/**此处使用模糊匹配查询 类比数据库中 like*/
QueryBuilder qb1 = QueryBuilders.matchPhraseQuery("NICK_NAME", name);
BoolQueryBuilder bqb1 = QueryBuilders.boolQuery().must(qb1);
qbs.must(bqb1);
requestBuilder.setQuery(qbs);
SearchResponse response = requestBuilder.setFrom(0).setSize(10).execute().actionGet();
SearchHits hits = response.getHits();
if (hits.getHits().length > 0) {
for (int i = 0; i < hits.getHits().length; i++) {
SearchHit hit = hits.getHits()[i];
Map<String, Object> user_map = hit.getSource();
......
}
}