Java Query从Elasticsearch返回精确值

时间:2016-01-10 10:39:13

标签: java elasticsearch

我使用以下查询搜索文档:

user123

但我想让它返回一个包含确切用户名的文档。但目前返回的是一个例子: 正在搜索user123 user123 lastname firstname user123 以下全部返回:

user123

但我只想要.toDataURL返回。

我正在使用Elasticsearch 2.1.0

1 个答案:

答案 0 :(得分:0)

您需要使用term query进行完全匹配。我假设您使用standard analyzer(默认)代表user field,因此您有跟踪令牌inverted index

  • user123(doc 1,2,3)
  • firstname(doc 3)
  • 姓氏(doc 2)

当您使用match query时,它将返回所有三个文档。您需要将用户字段映射为index : not_analyzed,以便不执行任何分析。您的反转索引将如下所示。

  • user123
  • user123 lastname
  • firstname user123

然后此查询将为您提供所需的结果

QueryBuilder qb = termQuery(
                "username_field",
                "user123"
            );