怎么获得elasticsearch java 中文文档

 我来答
谁开头9K
2016-08-21 · TA获得超过2413个赞
知道小有建树答主
回答量:585
采纳率:80%
帮助的人:213万
展开全部
方法/步骤

建立客户端连接
集群名称默认为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<String> jsondata = ElasticsearchTest.getInitJsonData();
for(int i=0; i<jsondata.size(); 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界面查看下执行效果
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式