我正在使用AWS SDK连接到弹性搜索。我正在浏览https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-indexing.html
本主题中的其他问题更像是权限问题或在给ElasticSearch写信时出现的问题。对我来说,写作很好,只有阅读给了我错误
POST方法工作得很好,它正在添加索引。我正在以相同的方式进行GET搜索请求
public void getIndexedRecords(String index,String type,String id,String documentJSON){
try {
String endpoint = host +"/" +index+"/_search" ;
// Builds the request. We need an AWS service, URI, HTTP method, and request
// body (in this case, JSON).
Request<?> request = new DefaultRequest<Void>(service);
request.setEndpoint(new URI(endpoint));
request.setHttpMethod(HttpMethodName.GET);
request.setContent(new ByteArrayInputStream(documentJSON.getBytes()));
// Retrieves our credentials from the computer. For more information on where
// this class looks for credentials, see
// http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/DefaultAWSCredentialsProviderChain.html.
String accessKey = CommonUtils.getCommonProperty("accessKey", "");
String secretKey = CommonUtils.getCommonProperty("secretKey", "");;
AWSCredentials creds = new BasicAWSCredentials(accessKey, secretKey);
// Signs the request using our region, service, and credentials. AWS4Signer
// modifies the original request rather than returning a new request.
AWS4Signer signer = new AWS4Signer();
signer.setRegionName(region);
signer.setServiceName(service);
signer.sign(request, creds);
request.addHeader("Content-Type", "application/json");
// Creates and configures the HTTP client, creates the error and response
// handlers, and finally executes the request.
ClientConfiguration config = new ClientConfiguration();
config.setProtocol(Protocol.HTTPS);
AmazonHttpClient client = new AmazonHttpClient(config);
System.out.println(client);
ExecutionContext context = new ExecutionContext(true);
ESAWSErrorHandler errorHandler = new ESAWSErrorHandler();
ESAWSResponseHandler<Void> responseHandler = new ESAWSResponseHandler<Void>();
client.requestExecutionBuilder().executionContext(context).errorResponseHandler(errorHandler).request(request)
.execute(responseHandler);
} catch (Exception e) {
e.printStackTrace();
}
}
但它给了我一个403禁止错误。当我使用endpointurl Curl XGET时,我得到的是结果。我在这里做错了什么?
Com.AmazonAws.AmazonServiceException:(服务:null;状态代码:403;错误代码:禁止;请求ID:null)位于com.AmazonAws.HTTP.AmazonHttpClient$RequestExecutor.HandleErrorResponse(AmazonHttpClient$RequestExecutor.ExecuteOneRequest(AmazonHttpClient.1588)位于com.AmazonAws.HTTP.AmazonHttpClient$RequestExecutor.ExecuteOneRequest(AmazonHttpClient.1258)位于
我想您可能需要在ES策略中使用ES:esHttpGet
。
参考:
Amazon Elasticsearch Service Access Control
控制对您的Amazon Elasticsearch服务域的访问
我是弹性搜索的新手,我正在尝试使用下面的映射创建索引,我在网上找到了这些映射,并使用kibana作为我的客户机,它抛出错误。 “类型”:“映射程序解析异常”,“原因”:“根映射定义有不受支持的参数:[local_test:{u all={enabled=false},properties={amount={type=long},user_id={type=keyword},recurtive={t
我正在学习弹性搜索,还有很多东西我没有得到,但有一件事我不知道(或发现所有的)是什么时候使用一个索引,什么时候使用更多的索引。部分原因是我不知道弹性搜索索引到底是什么。 您能解释一下什么是弹性搜索索引吗?什么时候应该只对所有数据使用一个索引?什么时候应该将数据拆分为多个索引? 奖励点/或者,我如何判断何时需要将我的数据拆分为多个索引,然后,我应该如何决定如何将数据拆分为新的索引?
请帮帮我,我对这个很陌生。提前谢了。
我有大量相同类型的实体,每个实体都有大量属性,并且我只有以下两种选择来存储它们: 将每个项存储在索引中并执行多索引搜索 将所有enties存储在单个索引中,并且只搜索1个索引。 一般而言,我想要一个时间复杂度之间的比较搜索“N”实体与“M”特征在上述每一种情况!
我想把我的项目连接到弹性搜索。我得到以下错误: com.example.demo.elasticsearch.controller中的字段存储库。控制器需要“com.example.demo.elasticsearch.repository”类型的bean。找不到CustomerRepository“。 注入点有以下注释:- 行动: 所以我构建了一些类,如下所示: Controller.java
我刚加入弹性搜索公司。而不知道如何在JSON请求中对索引和an类型发出正确的请求?(所以我不想像localhost:9200/myindex/mytype/_search那样在URL中使用索引和类型,而是向localhost:9200/_search发出JSON请求) 我试过这样的东西。但我得到的结果是'AAA'索引而不是'BBB'索引。如何只从bbb索引得到结果或者根本没有结果?