gpt4 book ai didi

Elasticsearch bool 搜索匹配不正确

转载 作者:行者123 更新时间:2023-12-02 22:16:08 25 4
gpt4 key购买 nike

所以我有一个带有 Id 字段的对象,该字段由 Guid 填充。我正在使用“必须”子句进行 elasticsearch 查询以匹配该字段中的特定 ID。问题是 elasticsearch 返回的结果与我提供的 Guid 不完全匹配。我注意到我提供的 Guid 和 Elasticsearch 返回的结果之一在 Guid 的一个特定部分共享相同的数字。

这是我的查询源(我使用的是 Elasticsearch head 控制台):

{
query:
{
bool:
{
must: [
{
text:
{
couchbaseDocument.doc.Id: 5cd1cde9-1adc-4886-a463-7c8fa7966f26
}
}]
must_not: [ ]
should: [ ]
}
}
from: 0
size: 10
sort: [ ]
facets: { }
}

它返回两个结果。一个 ID 为

5cd1cde9-1adc-4886-a463-7c8fa7966f26

另一个ID为

34de3d35-5a27-4886-95e8-a2d6dcf253c2

如您所见,它们共享相同的中间项“-4886-”。但是,我希望此查询仅在记录完全匹配而不是部分匹配时返回记录。我在这里做错了什么?

最佳答案

查询(可能)是正确的。

您几乎可以肯定看到的是 'Standard Analyzer` 的作品在索引时默认使用。此分析器将标记连字符 ('-') 和其他字符上的输入(将其拆分为术语)。这就是找到匹配项的原因。

要解决此问题,您需要将 couchbaseDocument.doc.Id 字段设置为 not_analyzed

参见:How to not-analyze in ElasticSearch?以及从那里到官方文档的链接。

映射是这样的:

{
"yourType" : {
"properties" : {
"couchbaseDocument.doc.Id" : {"type" : "string", "index" : "not_analyzed"},
}
}
}

关于Elasticsearch bool 搜索匹配不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22821358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com