Elasticsearch官方API文档
1.建立连接
private static void open()
{
Settings settings = Settings.settingsBuilder()
.put("cluster.name", "molong").build();
try {
client = TransportClient.builder().settings(settings).build()
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
2.进行查询
SearchRequestBuilder responsebuilder = client.prepareSearch("index").setTypes("type")
SearchResponse myresponse=responsebuilder.setQuery(QueryBuilders.matchPhraseQuery("title", "molong1208 blog")).setFrom(0).setSize(10).setExplain(true).execute().actionGet();
3.展示
SearchHits hits = myresponse.getHits();
for (int i = 0; i < hits.getHits().length; i++) {
System.out.println(hits.getHits()[i].getSourceAsString());}
3.展示
1.基本查询
responsebuilder.setQuery(QueryBuilders.matchPhraseQuery("title", "molong1208"))
tiele:为Elastic中索引字段 molong1208:为需要查询的东西
2.多条件查询
responsebuilder.setQuery(QueryBuilders.termsQuery("title", "molong1208","blog","csdn"))
molong1208,blog,csdn在title字段进行查询,如果有三者中的任意一个即算匹配
responsebuilder.setQuery(QueryBuilders.matchAllQuery())
4.常用词查询
responsebuilder.setQuery(QueryBuilders.commonTermsQuery("name", "lishici"))
与1. 基本查询matchPhraseQuery(String name, Object text)类似
responsebuilder.setQuery(QueryBuilders.multiMatchQuery("lishi", "subcat","name"))
multiMatchQuery(text,fields)其中的fields是字段的名字,可以写好几个,每一个中间用逗号分隔
responsebuilder.setQuery(QueryBuilders.multiMatchQuery("lishi", "subcat","name"))
multiMatchQuery(text,fields)其中的fields是字段的名字,可以写好几个,每一个中间用逗号分隔
responsebuilder.setQuery(QueryBuilders.rangeQuery("age").gt(10).lt(20))
对于某一个field,大于多少,小于多少
responsebuilder.setQuery(QueryBuilders.regexpQuery(field, regexp))
responsebuilder.setQuery(QueryBuilders.boolQuery().must(QueryBuilders.multiMatchQuery(query, "name","title","title_1")).must(QueryBuilders.multiMatchQuery(query2, "title2","title3")))
在title或者title_1或者name字段有query,并且在title2或者title3字段有query2的结果召回来