繁体   English   中英

Elasticsearch Java API - 构建查询

[英]Elasticsearch Java API - building queries

我查看了搜索API的文档,但发现它们的描述性不够(即使它们编写得非常好)。 我正在尝试构建一个查询,但很少了解所有可用的不同选项,并且在构建查询时无法找到有关此事的信息,而我无法翻译我可以在Sense中运行的查询,我可以使用Java API运行查询。

在Sense我有以下内容:

GET index/_search
{
  "query": {
    "match" : {
      "name" : "some string"
    }
  }
}

在我的Java代码中,我有:

node = nodeBuilder().client(true).clusterName(CLUSTER_NAME).node();
client = node.client();
QueryBuilder qb = QueryBuilders.termQuery("name", "some string");
SearchResponse response = client.prepareSearch("index") //
    .setQuery(qb) // Query
    .execute().actionGet();

但他们会产生不同的搜索结果。 有什么不同,因为我看不到它? 还有一个很好的信息来源可能有用吗?

如果您希望两个查询返回相同的结果,则需要使用相同类型的查询。 在您的Sense查询中,您正在执行匹配查询:

"query": {
    "match" : {
      "name" : "some string"
    }
  }

但在您的Java代码中,您正在执行termQuery:

QueryBuilder qb = QueryBuilders.termQuery("name", "some string");

因此,要回答您的问题,请在Java代码中使用匹配查询:

QueryBuilder qb = QueryBuilders.matchQuery("name", "some string");

关于你的第二个问题,它有点宽泛。 我当然会尝试通过文档并在StackOverflow上搜索。 关于Java API,我在这里查看概述, 这里是关于查询dsl到Java的信息。

我认为通过REST API对Elasticsearch如何工作以及对查询机制的一些了解非常有用,这对于理解Java API非常有帮助。 开始的好地方:

http://joelabrahamsson.com/elasticsearch-101/

http://exploringelasticsearch.com/

http://java.dzone.com/articles/elasticsearch-getting-started

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM