RestClient对ElasticSearch增删改查

import com.alibaba.fastjson.JSON;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.apache.http.HttpHost;
import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.builder.SearchSourceBuilder;

import java.io.IOException;
import java.util.Map;

class User {
    String name;

    String[] fields;

    public User() {
    }

    public User(String name) {
        this.name = name;
    }

    public User(String name, String[] strings) {
        this.name = name;
        this.fields = strings;
    }
}

public class TestEsClient {
    public static void main(String[] args) throws IOException {
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("localhost", 9200, "http")));

/**
        // 创建索引的请求
        CreateIndexRequest indexRequest = new CreateIndexRequest("test_index2");
        // mapping规则去别的地方写好之后,复制粘贴过来,IDEA会自动转义相关符号
        String mapping = "{\n" +
                "    \"properties\":{\n" +
                "        \"name\":{\n" +
                "            \"type\":\"keyword\"\n" +
                "        }\n" +
                "    }\n" +
                "}";
        // 添加索引的mapping规则
        indexRequest.mapping("_doc", mapping, XContentType.JSON);
        // 发送请求
        CreateIndexResponse response = client.indices().create(indexRequest, RequestOptions.DEFAULT);
        System.out.println(response);


        //添加文档
        XContentBuilder xContentBuilder = XContentFactory.jsonBuilder();
        xContentBuilder.startObject();
        {
            xContentBuilder.field("user", "hankin");
            xContentBuilder.field("message", "Go ELK");
        }
        xContentBuilder.endObject();
        IndexRequest request = new IndexRequest("test_index2");
        request.source(xContentBuilder);
        request.type("_doc");
        IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);
        System.out.println(indexResponse);





*/

        // 构造搜索请求
        SearchRequest searchRequest = new SearchRequest("test_index2");
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        searchSourceBuilder.query();
        searchRequest.source(searchSourceBuilder);
        // 执行搜索请求
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        // 处理搜索结果
        SearchHits hits = searchResponse.getHits();
        for (SearchHit hit : hits.getHits()) {
            Map<String, Object> sourceAsMap = hit.getSourceAsMap();
            System.out.println(sourceAsMap);
        }
        String jsonResponse = searchResponse.toString();
        System.out.println("jsonResponse: " + jsonResponse);
        JsonObject jsonObject = new JsonParser().parse(jsonResponse).getAsJsonObject();
        System.out.println("jsonObject.toString(): " + jsonObject.toString());

        // 关闭连接
        client.close();
    }
}

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>TestElasticSearchClient</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.6</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>6.5.4</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>6.5.4</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-client</artifactId>
            <version>6.5.4</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.2</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.62</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>

            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Spring Boot 操作 Elasticsearch增删改查可以通过 Elasticsearch 的 Java API 完成。以下是一个简单的示例: 1. 添加 Elasticsearch Maven 依赖 ```xml <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.13.1</version> </dependency> ``` 2. 创建 Elasticsearch 客户端连接 ```java @Configuration public class ElasticsearchConfig { @Bean public RestHighLevelClient restHighLevelClient() { RestClientBuilder builder = RestClient.builder( new HttpHost("localhost", 9200, "http") ); return new RestHighLevelClient(builder); } } ``` 3. 定义 Elasticsearch 数据模型 ```java @Document(indexName = "my_index", createIndex = true) public class Book { @Id private String id; private String title; private String author; private String content; // 省略 getter 和 setter 方法 } ``` 4. 定义 Elasticsearch 数据访问层接口 ```java @Repository public interface BookRepository extends ElasticsearchRepository<Book, String> { } ``` 5. 实现 Elasticsearch 数据访问层接口 ```java @Service public class BookService { private final BookRepository bookRepository; public BookService(BookRepository bookRepository) { this.bookRepository = bookRepository; } public void save(Book book) { bookRepository.save(book); } public Book getById(String id) { return bookRepository.findById(id).orElse(null); } public void deleteById(String id) { bookRepository.deleteById(id); } public List<Book> search(String query) { SearchHit[] searchHits = searchHits(query); List<Book> books = new ArrayList<>(); for (SearchHit searchHit : searchHits) { books.add(searchHit.getSourceAsMap()); } return books; } private SearchHit[] searchHits(String query) { SearchRequest searchRequest = new SearchRequest("my_index"); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); searchSourceBuilder.query(QueryBuilders.queryStringQuery(query)); searchRequest.source(searchSourceBuilder); SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT); return searchResponse.getHits().getHits(); } } ``` 使用以上方法,你可以在 Spring Boot 中非常容易地操作 Elasticsearch,进行增删改查的操作。需要注意的是,Elasticsearch 的 Java API 非常强大,可以满足各种复杂的需求。如果你需要更多的细节,请查看 Elasticsearch 官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值