在java中如何调用ElasticSearch,步骤同‘IK中文分词的使用’中的步骤
1elasticsearch学习一、安装和配置
0elasticsearch学习二、安装中文分词ik
3elasticsearch学习二、IK中文分词的使用
详细的操作方法或具体步骤
建立客户端连接
集群名称默认为elasticsearch,没有修改过无需setting可以建立连接:
Client client=new TransportClient().addTransportAddress(new InetSocketTransportAddress("172.20.0.196", 9300));
如果修改过集群的名称:
Settings settings=ImmutableSettings.settingsBuilder()
.put("cluster.name", "elasticsearch_01").build();
Client client=new TransportClient(settings)
.addTransportAddress(new InetSocketTransportAddress("172.20.0.196", 9300));

创建索引
public void createIndex(String index){
client.admin().indices().create(new CreateIndexRequest(index)).actionGet();
// waitForYellow
client.admin().cluster().health(new ClusterHealthRequest(index)
.waitForYellowStatus())
.actionGet();
}

创建mapping,和curl中完全对应,同样指定分析器为ik
public void createMapping(String index,String type) throws IOException{
XContentBuilder builder=XContentFactory.jsonBuilder()
.startObject()
.startObject(type)
.startObject("_all")
.field("indexAnalyzer", "ik")
.field("searchAnalyzer", "ik")
.field("term_vector", "no")
.field("store", "false")
.endObject()
.startObject("properties")
.startObject("content")
.field("type", "string")
.field("store", "no")
.field("term_vector", "with_positions_offsets")
.field("indexAnalyzer", "ik")
.field("searchAnalyzer", "ik")
.field("include_in_all", "true")
.field("boost", 9)
.endObject()
.endObject()
.endObject()
.endObject();
PutMappingRequest mapping=Requests.putMappingRequest(index).type(type).source(builder);
client.admin().indices().putMapping(mapping).actionGet();
}

索引一些数据,创建成功isCreated()返回true
public void createData(String index,String type){
List
for(int i=0; i IndexResponse indexResp=client.prepareIndex() .setIndex(index).setType(type).setId(i+1+"") .setSource(jsondata.get(i)).execute().actionGet(); boolean isCreated=indexResp.isCreated(); System.out.println("是否成功创建数据isCreated:"+isCreated); } } 查询数据方法 public void queryData(String index,String type){ QueryBuilder queryBuilder= QueryBuilders.termQuery("content", "中国"); SearchResponse searchResponse=client.prepareSearch(index).setTypes(type) .setQuery(queryBuilder) .execute() .actionGet(); SearchHits hits=searchResponse.getHits(); System.out.println("查询到记录数:" + hits.getTotalHits()); SearchHit[] searchHists=hits.getHits(); for(SearchHit sh : searchHists){ System.out.println("content:"+sh.getSource().get("content")); } } 在main方法中调用 创建索引、mapping、数据 按条件查询,显示查询结果。 同时可以打开head界面查看下执行效果 




- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
