Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SpringBoot Elastisearch RestHighLevelClient Java搜索API_Java_Spring_Spring Boot_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Rest Client - Fatal编程技术网 elasticsearch,rest-client,Java,Spring,Spring Boot,elasticsearch,Rest Client" /> elasticsearch,rest-client,Java,Spring,Spring Boot,elasticsearch,Rest Client" />

SpringBoot Elastisearch RestHighLevelClient Java搜索API

SpringBoot Elastisearch RestHighLevelClient Java搜索API,java,spring,spring-boot,elasticsearch,rest-client,Java,Spring,Spring Boot,elasticsearch,Rest Client,我正在关注这一切,一切都很好。 除了我想添加一些额外的搜索功能 我有以下文件是我的Elasticsearch 6.1索引: { "author": "georges", "price": 99.1, "id": "06e68109-504a-44d6-bf2e-0debb12c984d", "title": "Java Always" } 我的Spring Boot应用程序在端口8080上运行。我知道如何使用postman的以下API插入数据:127.0.0.1

我正在关注这一切,一切都很好。 除了我想添加一些额外的搜索功能

我有以下文件是我的Elasticsearch 6.1索引:

{
    "author": "georges",
    "price": 99.1,
    "id": "06e68109-504a-44d6-bf2e-0debb12c984d",
    "title": "Java Always"
}
我的Spring Boot应用程序在端口8080上运行。我知道如何使用postman的以下API插入数据:
127.0.0.1:8080/books
,也知道如何使用ID获取图书
127.0.0.1:8080/books/06e68109-504a-44d6-bf2e-0debb12c984d
,感谢E-S提供的获取请求

//这很好用谢谢
@存储库
公共类藏书刀{
私有最终字符串索引=“bookdata”;
私有最终字符串TYPE=“books”;
私有RestHighLevelClient RestHighLevelClient;
...
公共地图getBookById(字符串id){
GetRequest GetRequest=新的GetRequest(索引、类型、id);
GetResponse GetResponse=null;
试一试{
getResponse=restHighLevelClient.get(getRequest);
}捕获(java.io.ioe异常){
e、 getLocalizedMessage();
}
Map sourceAsMap=getResponse.getSourceAsMap();
返回源asmap;
}
问题是:我如何按作者搜索这本书

我尝试了完全相同的实现,但它不起作用,因为GetRequest只通过文档id获取文档

public Map<String, Object> getBookByAuthor(String author) throws IOException {

        GetRequest getRequest = new GetRequest(INDEX, TYPE, author);
        GetResponse getResponse = null;
        try {
            getResponse = restHighLevelClient.get(getRequest);
        } catch (java.io.IOException e) {
            e.getLocalizedMessage();
        }
        Map<String, Object> sourceAsMap = getResponse.getSourceAsMap();

        return sourceAsMap;
    }
公共映射getBookByAuthor(字符串作者)引发IOException{
GetRequest GetRequest=新的GetRequest(索引、类型、作者);
GetResponse GetResponse=null;
试一试{
getResponse=restHighLevelClient.get(getRequest);
}捕获(java.io.ioe异常){
e、 getLocalizedMessage();
}
Map sourceAsMap=getResponse.getSourceAsMap();
返回源asmap;
}
我的控制器:

import java.util.Map;
导入org.springframework.web.bind.annotation.DeleteMapping;
导入org.springframework.web.bind.annotation.GetMapping;
导入org.springframework.web.bind.annotation.PathVariable;
导入org.springframework.web.bind.annotation.PostMapping;
导入org.springframework.web.bind.annotation.PutMapping;
导入org.springframework.web.bind.annotation.RequestBody;
导入org.springframework.web.bind.annotation.RequestMapping;
导入org.springframework.web.bind.annotation.RestController;
导入com.gvh.es.rest.es6rest.dao.BookDao;
导入com.gvh.es.rest.es6rest.model.Book;
@RestController
@请求映射(“/books”)
公共类图书管理员{
私家书刀;
公共图书管理员(BookDao BookDao){
this.bookDao=bookDao;
}
@GetMapping(“/{id}”)
公共映射getBookById(@PathVariable字符串id){
返回bookDao.getBookById(id);
}
@邮戳
public Book insertBook(@RequestBody Book)引发异常{
还书刀。插入书(书);
}
@PutMapping(“/{id}”)
公共地图updateBookById(@RequestBody Book,@PathVariable String id){
返回bookDao.updateBookById(id,book);
}
@DeleteMapping(“/{id}”)
public void deleteBookById(@PathVariable字符串id){
bookDao.deleteBookById(id);
}
}

我也遇到了这个问题,这是我的问题解决方案。它与我的代码一起工作。 更改用户名和密码,我认为它可能会起作用

private RestHighLevelClient buildClient() {
    try {
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY,new UsernamePasswordCredentials("username", "password"));
        RestClientBuilder builder = RestClient.builder(
            new HttpHost("localhost", 9200, "http")).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
            @Override
            public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
            }
        });
        restHighLevelClient = new RestHighLevelClient(builder);
    } catch (Exception e) {
        logger.error(e.getMessage());
    }
    return restHighLevelClient;
}
private RestHighLevelClient buildClient() {
    try {
        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY,new UsernamePasswordCredentials("username", "password"));
        RestClientBuilder builder = RestClient.builder(
            new HttpHost("localhost", 9200, "http")).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
            @Override
            public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
            }
        });
        restHighLevelClient = new RestHighLevelClient(builder);
    } catch (Exception e) {
        logger.error(e.getMessage());
    }
    return restHighLevelClient;
}