用Java语言写个ES查询
时间: 2023-09-16 10:10:52 浏览: 37
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.List;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
public class ESQuery {
//ES服务器地址
private static String ES_HOST = "localhost";
//ES服务器端口号
private static int ES_PORT = 9300;
//索引名称
private static String INDEX_NAME = "my_index";
//类型名称
private static String TYPE_NAME = "my_type";
public static void main(String[] args) {
//创建ES客户端
Client client = createClient();
//查询
SearchResponse response = client.prepareSearch(INDEX_NAME)
.setTypes(TYPE_NAME)
.setQuery(QueryBuilders.matchQuery("name", "张三"))
.setSize(10)
.execute()
.actionGet();
//获取查询结果
SearchHit[] hits = response.getHits().getHits();
//解析查询结果
List<String> resultList = new ArrayList<String>();
for(SearchHit hit : hits) {
String result = hit.getSourceAsString();
resultList.add(result);
}
//输出查询结果
System.out.println(resultList);
//关闭ES客户端
client.close();
}
//创建ES客户端
private static Client createClient() {
TransportClient client = null;
try {
//设置集群名称
Settings settings = Settings.builder().put("cluster.name", "elasticsearch").build();
//创建client
client = new PreBuiltTransportClient(settings)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(ES_HOST), ES_PORT));
} catch (Exception e) {
e.printStackTrace();
}
return client;
}
}