您的位置:首页 > 编程语言 > Java开发

ElasticSearch-Java Api 创建索引 并加索引结构

2018-04-02 16:23 537 查看
一、ES  maven 依赖ES maven 依赖:
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.6.0</version>
</dependency>二、Java API 操作
1. 创建TCP客户端Settings settings = Settings.builder().put("cluster.name", "es集群名称").build();
TransportClient client = new PreBuiltTransportClient(settings);
TransportAddress transportAddress = new InetSocketTransportAddress(InetAddress.getByName("es服务ip"), 9300);
client.addTransportAddress(transportAddress);2. 创建索引结构 XContentBuilder builder=XContentFactory
.jsonBuilder()
.startObject()
.startObject("sina")
.startObject("properties")
.startObject("article_title")
.field("type", "text")
.field("store", true)
.field("index",true)
.endObject()
.startObject("article_content")
.field("type", "text")
.field("store", true)
.field("index",true)
.endObject()
.startObject("article_url")
.field("type", "text")
.field("store", true)
.field("index",true)
.endObject()
.endObject()
.endObject()
.endObject();3. 创建索引client.admin().indices().prepareCreate("pages").execute().actionGet();
PutMappingRequest mapping = Requests.putMappingRequest("pages").type("sina").source(builder);
client.admin().indices().putMapping(mapping).actionGet();4. 添加索引数据IndexResponse response = client.prepareIndex("pages", "sina", null)
.setSource(jsonBuilder().startObject()
.field("article_title", "title".getBytes())
.field("article_content", "content".getBytes())
.field("article_url", "url".getBytes())
.endObject()
)
.execute()
.actionGet();

client.close();5. ElasticSearch 设置 mapping 报错 No handler for type [string] declared on field [productID]原因:5.X以上版本没有string类型了,换成了text和keyword作为字符串类型。6. elasticsearch 6.0之后对支持的 索引字段类型做了调整 ,新建Mapping映射时,要查看最新的文档。
参考:
http://www.cnblogs.com/dxf813/p/8447467.html

https://my.oschina.net/congqian/blog/383463

https://blog.csdn.net/heatdeath/article/details/79510150
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: