一、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