在Elasticsearch'中编写查询;s的Java客户端
我使用了弹性搜索java客户端, 我正在实现一个搜索应用程序。 (索引已经建立) 我想重现弹性搜索java客户端,如下查询 但是,它无法复制 如果您熟悉java客户端, 我要你告诉我 我要执行的查询(示例字段有java和php) 在java客户机上组装查询 ↑ “builder”变量的输出内容 输出时,match中包含额外的属性。 此外,我还不知道如何匹配多个单词 有人,请把你的智慧借给我 环境在Elasticsearch'中编写查询;s的Java客户端,java,elasticsearch,Java,elasticsearch,我使用了弹性搜索java客户端, 我正在实现一个搜索应用程序。 (索引已经建立) 我想重现弹性搜索java客户端,如下查询 但是,它无法复制 如果您熟悉java客户端, 我要你告诉我 我要执行的查询(示例字段有java和php) 在java客户机上组装查询 ↑ “builder”变量的输出内容 输出时,match中包含额外的属性。 此外,我还不知道如何匹配多个单词 有人,请把你的智慧借给我 环境 语言:Java8 框架:Spring Elasticsearch客户端(jar)版本 *Org.e
- 语言:Java8
- 框架:Spring
- Elasticsearch客户端(jar)版本
*Org.elasticsearch:5.1.1
*Org.elasticsearch.client:5.1.1 - Elasticsearch版本:5.3.1
{
"articles": {
"mappings": {
"article": {
"properties": {
"sample": {
"type": "text"
}
}
}
}
}
}
我索引了以下三份文件:
{ "sample" : "java php" },
{ "sample" : "java" },
{ "sample" : "php" }
您提供的es查询提供了以下结果:
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.51623213,
"hits": [
{
"_index": "articles",
"_type": "article",
"_id": "AV0rSbyjpRVEWsG0iTxj",
"_score": 0.51623213,
"_source": {
"sample": "java php"
}
}
]
}
}
为了获得与Java API相同的结果,我使用:
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery()
.must(QueryBuilders.matchQuery ("sample", "java"))
.must(QueryBuilders.matchQuery ("sample", "php"));
SearchRequestBuilder builder = client.prepareSearch()
.setSize(50)
.setQuery(boolQuery);
SearchResponse response;
try {
response = builder.execute().get();
for (SearchHit hit : response.getHits().getHits()) {
LOG.info("Result: " + hit.getSourceAsString());
}
} catch (InterruptedException | ExecutionException e) {
// handle exception
LOG.error("Exception while executing query {}", e);
}
结果:
Result: { "sample" : "java php" }
调试时在查询中看到的所有附加属性都只是默认值,Java API会显式设置它们。谢谢!我非常感激。我能够成功地实施。
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.51623213,
"hits": [
{
"_index": "articles",
"_type": "article",
"_id": "AV0rSbyjpRVEWsG0iTxj",
"_score": 0.51623213,
"_source": {
"sample": "java php"
}
}
]
}
}
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery()
.must(QueryBuilders.matchQuery ("sample", "java"))
.must(QueryBuilders.matchQuery ("sample", "php"));
SearchRequestBuilder builder = client.prepareSearch()
.setSize(50)
.setQuery(boolQuery);
SearchResponse response;
try {
response = builder.execute().get();
for (SearchHit hit : response.getHits().getHits()) {
LOG.info("Result: " + hit.getSourceAsString());
}
} catch (InterruptedException | ExecutionException e) {
// handle exception
LOG.error("Exception while executing query {}", e);
}
Result: { "sample" : "java php" }