我正在尝试在 ElasticSearch 服务器上做一个简单的搜索并得到以下错误
ElasticsearchStatusException[Elasticsearch exception [type=illegal_argument_exception, reason=request [/recordlist1/_search] contains unrecognized parameter: [ccs_minimize_roundtrips]]]
Run Code Online (Sandbox Code Playgroud)
查询字符串:
{"query":{"match_all":{"boost":1.0}}}
我正在使用:elasticsearch-rest-high-level-client(maven artifact)
SearchRequest searchRequest = new SearchRequest(INDEX);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
searchRequest.source(searchSourceBuilder);
try
{
System.out.print(searchRequest.source());
SearchResponse response = getConnection().search(searchRequest,RequestOptions.DEFAULT);
SearchHit[] results=response.getHits().getHits();
for(SearchHit hit : results)
{
String sourceAsString = hit.getSourceAsString();
System.out.println( gson.fromJson(sourceAsString, Record.class).year);
}
}
catch(ElasticsearchException e)
{
e.getDetailedMessage();
e.printStackTrace();
}
catch (java.io.IOException ex)
{
ex.getLocalizedMessage();
ex.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud) 我在 Spring Boot 应用程序中使用 ElasticSearch 高级客户端 Java API。我想记录使用高级客户端 API 构建的查询以进行调试。
我的问题是我的 application.properties 文件中需要什么样的设置才能打开从我的应用程序构建的 JSON 查询?
我在 application.properties 文件中尝试了以下属性。但是,它不会打印使用各种查询构建器构建的 JSON 查询。
logging.level.org.elasticsearch.client=TRACE
logging.level.org.elasticsearch.client.sniffer=TRACE
logging.level.org.elasticsearch=TRACE
Run Code Online (Sandbox Code Playgroud) 我想通过 JAVA API 对字段进行映射,但失败了。以下是详细信息:
我的数据结构是:
{
"mje-test-execution-id": "464b66ea6c914ddda217659c84a3cb9d",
"jvm-free-memory": 315245608,
"jvm-total-memory": 361758720,
"system-free-memory": 0,
"jvm-max-memory": 7600078848,
"system-total-memory": 34199306240,
"memory-time-stamp": "2020-03-12T05:12:16.835Z",
"mje-host-name": "CN-00015345",
"mje-test-suite-name": "SCF Test no mje version",
"mje-version": "1.8.7771-SNAPSHOT",
"mje-test-artifact-id": "msran-regression-tests",
"mje-test-version": "1.8.7771-SNAPSHOT",
"stp-id": "vran-stp",
"mje-test-location": {
"lat": 58.41,
"lon": 15.62
}
}
Run Code Online (Sandbox Code Playgroud)
我想做的是:将“mje-test-location”类型设置为“geo_point”
我的代码片段:
public void postMapping(String indexName, String field, String type) throws IOException {
GetIndexRequest request = new GetIndexRequest(indexName);
boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
if (!exists) {
LOGGER.info("index {} does not exist. Now to post mapping.", indexName); …Run Code Online (Sandbox Code Playgroud) 我是开放搜索的新手。
我正在努力利用 OpenSearch 的 Java SDK。
我知道这包含两个供客户端使用的 java 类:
OpenSearchClientRestHighLevelClient
我知道RestHighLevelClient在elasticsearch 7.x 中已弃用,并且驼峰式和蛇形式之间的转换是不可能的。
因此,在使用 时OpenSearchClient,我发现 的包装器查询不存在OpenSearchClient。
所以,我想问的是:
如何使用 进行包装查询OpenSearchClient?
当前的逻辑RestHighLevelClient是:
String query = "{\"term\":{\"name.keyword\":{\"value\":\"bob\"}}}"
BoolQueryBuilder queryBuilder = new BoolQueryBuilder()
.must(new WrapperQueryBuilder(query));
RestClientBuilder builder = getRestClientBuilder();
SearchResponse searchResponse;
try (RestHighLevelClient highLevelClient = new RestHighLevelClient(builder)) {
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder()
.query(queryBuilder).from(0).size(10);
SearchRequest searchRequest = Requests.searchRequest("my_index")
.source(searchSourceBuilder);
searchResponse = highLevelClient.search(searchRequest, RequestOptions.DEFAULT);
}
Run Code Online (Sandbox Code Playgroud)
感谢您分享您的知识。
我的 API 版本是 6.3,我尝试创建索引。失败说“映射定义不能嵌套在类型 [_doc] 下,除非 include_type_name 设置为 true”。这是我的代码:
CreateIndexRequest indexRequest = new CreateIndexRequest("user");
request.source("{\n" +
" \"settings\" : {\n" +
" \"number_of_shards\" : 1,\n" +
" \"number_of_replicas\" : 0\n" +
" },\n" +
" \"mappings\" : {\n" +
" \"_doc\" : {\n" +
" \"properties\" : {\n" +
" \"message\" : { \"type\" : \"text\" }\n" +
" }\n" +
" }\n" +
" },\n" +
" \"aliases\" : {\n" +
" \"twitter_alias\" : {}\n" +
" }\n" + …Run Code Online (Sandbox Code Playgroud) 我正在使用 Elasticsearch 7.3 并且无法将其连接到我的 Spring boot 应用程序以使用ElasticsearchRepository.
@Configuration
public class ElasticSearchConfig {
@Value("${elasticsearch.host:localhost}")
public String host;
@Value("${elasticsearch.port:9300}")
public int port;
public String getHost() {
return host;
}
public int getPort() {
return port;
}
private int timeout = 60;
@Bean
public RestHighLevelClient client() {
System.out.println("host:" + host + "port:" + port);
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic", "changeme"));
RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200, "http")).setHttpClientConfigCallback(httpClientBuilder -> httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider));
builder.setRequestConfigCallback(requestConfigBuilder -> requestConfigBuilder.setConnectTimeout(timeout * 1000).setSocketTimeout(timeout * 1000)
.setConnectionRequestTimeout(0)); …Run Code Online (Sandbox Code Playgroud) spring elasticsearch spring-boot spring-data-elasticsearch resthighlevelclient