基于JAVA调用ES API实践索引、映射与文档的操作

一、POM文件引用ES必要依赖

<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>5.6.8</version>
</dependency>

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>transport</artifactId>
    <version>5.6.8</version>
</dependency> 

二、连接与释放ES Server
1、对ES操作之前需要创建与ES Server的连接,如下:

Settings settings = Settings.builder().put("cluster.name", "es_cluster").build();
TransportClient client = new PreBuiltTransportClient(settings).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));

其中cluster.name对应的Value值是自定义的ES集群名字(关于ES集群搭建,可参考“基于WIN10搭建ES伪集群的实践
”),InetSocketTransportAddress中机器IP对应的是集群主结点IP。
2、对ES操作之后需要释放与ES Server的连接,如下:

if(client != null){
    client.close();
}

三、创建索引

client.admin().indices().prepareCreate("est2").get();

创建成功截图如下:
在这里插入图片描述
四、创建映射
可以用XContentBuilder或者Json工具构建Json Mapping对象,然后通过ES API创建,比如用XContentBuilder构建Json对象,

{
    "mappings": {
        "demoMapping": {
            "properties": {
                "id": {
                	"type": "long",
                    "store": true,
                    "index":"not_analyzed"
                },
                "title": {
                	"type": "text",
                    "store": true,
                    "index":"analyzed",
                    "analyzer":"standard"
                },
                "content": {
                	"type": "text",
                    "store": true,
                    "index":"analyzed",
                    "analyzer":"standard"
                }
            }
        }
    }
}

那么创建映射的语句如下:

PutMappingRequest mapping = Requests.putMappingRequest("est2")
        .type("demoMapping").source(builder);
client.admin().indices().putMapping(mapping).get();

其中demoMapping是自定义的映射名字。
在这里插入图片描述
五、创建文档
和创建映射类似,需要先构建Json 文档对象,如用XContentBuilder构建Json对象,那么创建文档的语句如下:
client.prepareIndex(“est2”, “demoMapping”, “1”).setSource(builder).get();
其中demoMapping是自定义的映射名字,1是文档对应的id。
如用Json工具建立,需在工程中引入fastjson或jackson工具,通过bean设置值,语句如下:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.62</version>
</dependency>
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class DemoMapping {
    private Integer id;
    private String title;
    private String content;
}

在这里插入图片描述
在这里插入图片描述

发布了27 篇原创文章 · 获赞 17 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/pharos/article/details/105811137