当前位置: 首页 > 知识库问答 >
问题:

如何使用弹性Java Api而不是纯REST构建类型设置为“短语前缀”的多匹配查询

李法
2023-03-14

根据多匹配查询(https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html)的留档,可以通过前缀搜索多个属性。您所要做的就是将参数“type”设置为“phrase_prefix”。不幸的是,我在弹性JavaApi(https://www.elastic.co/guide/en/elasticsearch/client/java-api/1.6/multimatch.html)中找不到这个选项。我尝试了类似的东西:

QueryBuilder builder = QueryBuilders
    .multiMatchQuery("query", "property1", "property2");

但找不到设置"type"参数的位置。我知道纯粹的Rest是解决办法,但我仅限于java api。

我使用的是org的5.2.2版。弹性搜索。客户:运输。

共有1个答案

乐寒
2023-03-14

你必须添加. type(MatchQueryBuilder.类型。PHRASE_PREFIX)到您的生成器。

例子:

QueryBuilder builder = QueryBuilders
    .multiMatchQuery("query", "property1", "property2")
    .type(MatchQuery.Type.PHRASE_PREFIX)
 类似资料:
  • 我不知道如何通过MatchPhrasePrefix搜索索引中的文档。我想匹配整个搜索词短语,但允许在最后一个词上加前缀。 这个LINQ建筑给了我1.0分的一切。我将如何构建这个?另一方面,是否可以查看NEST正在构建的原始查询?那将非常有帮助!

  • 我遇到了一个问题,elasticsearch在我的环境(舞台和生产)中返回不同的结果。 我使用的elasticsearch版本对于这两种环境是相同的。 这两个环境都具有相同的映射和索引设置。 我有一个项目索引的标题字段为“测试”。我正在尝试执行match_phrase_prefix查询。然而,在我的舞台环境中,当我搜索“te”时,结果会像预期的那样返回。在生产中,我必须将搜索查询扩展到“TES”(

  • 添加注释 获取questiondetails_new/question/_search{“query”:{“bool”:{“should”:[{“match_prace”:{“tags.keyword”:“azure-data-factory”}},{“match_prach”:{“title”:“azure-data-factory”}}],“minimum_should_match”:1,“f

  • 问题内容: 这对我来说应该是显而易见的,但事实并非如此。以下两个仅匹配第二个阶段(在这种情况下为) 而以下错误发出错误消息 我想匹配包含的所有文件 或者 输入完全相同的词组。 问题答案: 您的第一个查询实际上不是有效的JSON对象,因为您两次使用相同的字段名称。 您可以使用布尔必须查询来匹配两个短语:

  • 我有一段说 我对代码的看法: 这是正确的做法吗??

  • 问题内容: 假设在我的Elasticsearch索引中,我有一个名为“点”的字段,其中将包含由标点符号分隔的字符串(例如“ first.second.third”)。 我需要搜索例如“ first.second”,然后获取其“点”字段包含正好是“ first.second”或以“ first.second”开头的字符串的所有条目。 我在理解文本查询的工作方式时遇到问题,至少我无法创建执行此任务的查