java Elasticsearch:按源id获取文档\u id
我最近开始使用ElasticSearch,但无法使用sourceid(26.0)获取文档\u id(E2EZ4NYBAATUNWZCSDSL9)
例如:
查询:
GET /_search?index=xyz
{
"_source": ["firstName", "lastName", "id", "email"]
}
下面是我的弹性搜索查询结果:
{
"took" : 431,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 98,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "xyz",
"_type" : "_doc",
"_id" : "E2EZ4nYBaAtUNwzCDsL9",
"_score" : 1.0,
"_source" : {
"lastName" : "mehta",
"firstName" : "zenny",
"id" : 26.0,
"email" : "zmehta@gmail.com"
}
}
]
}
}
下面我附上了从源id字段获取\u id的代码
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
QueryBuilder matchSpecificFieldQuery = QueryBuilders.multiMatchQuery(id, "id");
sourceBuilder.query(matchSpecificFieldQuery);
sourceBuilder.from(0);
sourceBuilder.size(5);
sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS)); // how long the search is allowed to take
SearchRequest searchRequest = new SearchRequest();
String[] includes = new String[] { "id" };
String[] excludes = Strings.EMPTY_ARRAY;
sourceBuilder.fetchSource(includes, excludes);
searchRequest.indices(INDEX_TYPE);
searchRequest.source(sourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
String docId = searchResponse.getHits().getHits()[0].getId();
DeleteRequest deleteRequest = new DeleteRequest(INDEX_TYPE, docId);
但似乎什么都不管用
目前,我只有id字段值,但对于删除请求,我需要使用源id获取_id。如何在ElasticSearch中通过_id删除记录
# 1 楼答案
您应该像这样通过deleteRequest调用客户端