java 连接 Elasticsearch 使用 TransportClient 进行插入、删除、修改、查询数据

依赖

<!-- org.elasticsearch.client/transport -->
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>transport</artifactId>
    <version>7.13.3</version>
</dependency>

配置

@Configuration
public class ESConfig {

    @Bean
    public TransportClient getTransportClient() {
        Settings settings = Settings.builder()
                .put("cluster.name", "elasticsearch").build();
        try {
            TransportClient client = new PreBuiltTransportClient(settings)
                    //        TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
                    .addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"), 9300))//通讯端口  而不是服务端口
                    .addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"), 9301));
            return client;
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        return null;
    }
}
@Autowired
private TransportClient transportClient;

插入数据

public void insertData() throws IOException {
    IndexResponse response = transportClient
            .prepareIndex("myindex", "_doc", "8")
            .setSource(XContentFactory.jsonBuilder()
                    .startObject()
                    .field("name", "dd ee ff")
                    .field("age", "24")
                    .endObject())
            .get();
    System.out.println(response.getResult());
}

删除数据

public void deleteData() {
    DeleteResponse response = transportClient
            .prepareDelete("myindex", "_doc", "2")
            .get();
    System.out.println(response.getResult());
}

修改数据

public void updateData() throws IOException {
    UpdateResponse response = transportClient
            .prepareUpdate("myindex", "_doc", "2")
            .setDoc(XContentFactory.jsonBuilder()
                    .startObject()
                    .field("name", "update name")
                    .endObject())
            .get();
    System.out.println(response.getResult());
}

查询单条数据

public void getOneData() {
    GetResponse response = transportClient.prepareGet("myindex", "_doc", "1")
            .get();
    //获取索引名称
    String index = response.getIndex();
    //获取索引类型
    String type = response.getType();
    //获取索引id
    String id = response.getId();
    System.out.println("index:" + index);
    System.out.println("type:" + type);
    System.out.println("id:" + id);
    System.out.println(response.getSourceAsString());
}

查询多条数据

public void getmultipleData() throws Exception {
    MultiGetResponse multiGetItemResponses = transportClient.prepareMultiGet()
            .add("myindex", "_doc", "1")
            .add("myindex", "_doc", "3")
            .get();
    for (MultiGetItemResponse itemResponse : multiGetItemResponses) {
        GetResponse response = itemResponse.getResponse();
        if (response.isExists()) {
            String index = response.getIndex();
            String id = response.getId();
            String json = response.getSourceAsString();
            String data = "index --> " + index + " id --> " + id + "\ndata --> " + json;
            System.out.println(data);
        }
    }
}

根据分词获取数据

public void getmultipleDatas() throws Exception {
    SearchResponse searchResponse = transportClient.prepareSearch("myindex")
            .setFetchSource("name", "age")
            .get();
    SearchHits hits = searchResponse.getHits();
    SearchHit[] hits1 = hits.getHits();
    Stream.of(hits1).forEach(System.out::println);
}
posted @ 2022-03-07 18:04  叕叕666  阅读(353)  评论(0)    收藏  举报