我们在上一篇文章中,已经讲解:elasticsearch 简介和创建索引初步中,我们已经讲解如何在elasticSearch 中创建索引,我们结合上一篇文章,来简单讲解ElasticSearch 是如何搜索数据的。
elasticsearch 搜索:
本项目环境:eclipse + JDK 7 + elasticsearch1.7.0
项目截图:
源代码:
实体数据类[com.elasticsearch.entry.Medicine]与上一篇文档相同。
实体数据集合工厂[com.elasticsearch.factory.DataFactory]与上一篇文档相同。
JSON 工具类[com.elasticsearch.util.JsonUtil]与上一篇文档相同。
ElasticSearch 核心检索类[com.elasticsearch.index.ElasticSearchHandler]与上一篇文档相同。
package com.elasticsearch.main;
import java.util.List;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import com.elasticsearch.date.DataFactory;
import com.elasticsearch.entity.Medicine;
import com.elasticsearch.index.ElasticSearchHandler;
public class ElasticsearchTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
ElasticSearchHandler esHandler = new ElasticSearchHandler();
//List<String> jsondata = DataFactory.getInitJsonData();
// String indexname = "indexdemo";
String indexname = "eindexdemo";
// String type = "typedemo";
String type = "etypedemo";
//创建索引
//esHandler.createIndexResponse(indexname, type, jsondata);
//查询条件
QueryBuilder queryBuilder = QueryBuilders.termQuery("id", 1);
/*QueryBuilder queryBuilder = QueryBuilders.boolQuery()
.must(QueryBuilders.termQuery("id", 1));*/
List<Medicine> result = esHandler.searcher(queryBuilder, indexname, type);
for(int i=0; i<result.size(); i++){
Medicine medicine = result.get(i);
System.out.println("(" + medicine.getId() + ")药品名称:" +medicine.getName() + "\t\t" + medicine.getFunction());
}
}
}
elasticsearch 检索结果: