笔者在使用java进行访问es创建ik分词的时候,当时找api比较费时间,现在将近期使用的api方法整理如下,若有更简单的欢迎拍砖。本实例代码仅限功能测试,不适用于作为生产环境,因为没有进行严格性能测试。本代码使用es版本2.3.5,ik版本1.9.5,ik-pinyin版本1.8.5(注意修改zip包中es版本有2.4.5到2.3.5)。
1. java获取es的连接
public static Client getElasticSearchClient() throws IOException {
// 设置elasticsearch的集群名称(多台时设置有意义)
Settings settings = Settings.settingsBuilder().put("cluster.name", "elasticsearch").build();
// 建立连接地址
InetSocketTransportAddress address = new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300);
// 获取es的客户端
return TransportClient.builder().settings(settings).build().addTransportAddress(address);
}
2.java创建索引
public static void creatIndexAndType() throws IOException {
Client client = getElasticSearchClient();
// 创建index的json
XContentBuilder source = XContentFactory.jsonBuilder().startObject().field("index.number_of_shards", 5).field("index.number_of_replicas", 1)
.startObject("analysis").startObject("analyzer").startObject("default").field("tokenizer", "ik_max_word").endObject()
.startObject("pinyin_analyzer").field("tokenizer", "my_pinyin").field("filter", "word_delimiter").endObject().endObject()