gpt4 book ai didi

elasticsearch - 使用Elasticsearch和NEST从ID返回五个以下文档

转载 作者:行者123 更新时间:2023-12-03 01:12:51 26 4
gpt4 key购买 nike

我认为我一遍又一遍地盯着错误视而不见,可以真正使用一些输入。我有一套按时间顺序排列的文件。现在,我想查找遵循特定ID的五个文档。我首先获取单个文档。然后获取以下五个没有此ID的文档:

var documents = client.Search<Document>(s => s
.Query(q => q
.ConstantScore(cs => cs
.Filter(f => f
.Bool(b => b
.Must(must => must
.DateRange(dr => dr.Field(field => field.Time).GreaterThanOrEquals(startDoc.Time))
.MustNot(mustNot => mustNot
.Term(term => term.Id, startDoc.Id))
))))
.Take(5)
.Sort(sort => sort.Ascending(asc => asc.Time))).Documents;
我的问题是,虽然5个文档被正确返回并排序,但是起始文档位于返回的数据中。我正在尝试使用must not filter过滤掉它,但似乎没有用。我很确定我在其他地方也这样做,所以这可能是一个小问题,我根本看不到:)
这是NEST生成的查询:
{
"query":{
"constant_score":{
"filter":{
"bool":{
"must":[
{
"range":{
"time":{
"gte":"2020-08-31T10:47:12.2472849Z"
}
}
}
],
"must_not":[
{
"term":{
"id":{
"value":"982DBC1BE9A24F0E"
}
}
}
]
}
}
}
},
"size":5,
"sort":[
{
"time":{
"order":"asc"
}
}
]
}

最佳答案

因为id字段可能是一个分析字段,所以可能会发生这种情况。被分析的字段被标记。拥有一个未经分析的版本,以实现完全匹配(就像您在评论中提到的那样,您拥有一个),并在过滤器中使用它可以解决您所看到的差异。
有关已分析和未分析字段的更多信息here

关于elasticsearch - 使用Elasticsearch和NEST从ID返回五个以下文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63673213/

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