gpt4 book ai didi

elasticsearch - ElasticSearch C#客户端(NEST):使用ES 5.5.0过滤结果

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

这是我以前使用的早期版本ES中的代码。移至ES 5.5之后。它已停止工作,并给出了编译器错误。

错误:“QueryStringQueryDescriptor”不包含“OnFields”的定义,并且没有扩展方法“OnFields”接受“QueryStringQueryDescriptor”类型的第一个参数

以下是我的代码段...

    public List<EmployeeInfo> SearchText2(string query, List<string> sendersList, int page = 0, int pageSize = 50)
{
try
{

var result = this.client.Search<EmployeeInfo>(s => s
.From(page * pageSize)
.Size(int.MaxValue)
.Query(q => q
.QueryString(qs => qs.Query(query).UseDisMax()
.OnFields(b => b.Subject)
.OnFields(b => b.Body)
))
.SortDescending(f => f.ReceivedTime)
.Filter(f => f.Terms(ak => ak.SenderName, sendersList))

);

...
// Some code here

}

关于如何进行这项工作的任何技巧都将非常有用。

最佳答案

最新版本的Nest库中有一些API更改

  • 应该使用OnFields代替QueryString中的Fields
    QueryString(qs => qs.Query(string.Empty).UseDisMax()
    .Fields(descriptor => descriptor.Fields(b => b.Subject, b => b.Body))
    ))
  • 应该使用SortDescending代替Sort
    .Sort(descriptor => descriptor.Field(f => f.ReceivedTime, SortOrder.Descending))
  • 另外,从版本5开始,过滤器在elasticsearch中不可用,您应该对过滤器使用bool查询
    Query(descriptor => 
    descriptor.Bool(boolQuery =>
    boolQuery
    .Must(query => query.MatchAll())
    .Filter(f => f.Terms(ak => ak.SenderName, sendersList)
    )
    )
    )
  • 关于elasticsearch - ElasticSearch C#客户端(NEST):使用ES 5.5.0过滤结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46450858/

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