C# 如何根据字符串数组的第一个元素从elasticsearch返回文档?
我的弹性搜索文件如下:C# 如何根据字符串数组的第一个元素从elasticsearch返回文档?,c#,.net,elasticsearch,nest,C#,.net,elasticsearch,Nest,我的弹性搜索文件如下: [ { _index: myindex, name: John, hobbies: Swimming, Golfing }, { _index: myindex, name: Alice, hobbies: Golfing, Swimming }, { _index: myindex, name: Alice,
[
{
_index: myindex,
name: John,
hobbies: Swimming, Golfing
},
{
_index: myindex,
name: Alice,
hobbies: Golfing, Swimming
},
{
_index: myindex,
name: Alice,
hobbies: Golfing
},
]
我需要一种方法来返回其嗜好
在嗜好字段中列为第一位的所有文档
我正在使用弹性搜索嵌套库来解决这个问题。我创建了一个elasticsearch服务,它是用C#构建的,用于创建我的查询。在这个服务中,我有一个查找功能,用于获取所有用户并对搜索应用过滤器。在这种情况下,我希望首先获取其爱好
被列为高尔夫
的所有文档,如果高尔夫
不是第一个爱好,那么我不想要这些文档
型号:
public class User {
public const string Name {get; set;}
public List<string> Hobbies {get; set;}
}
我想过滤这些文档,这样我只会得到那些爱好首先被列为高尔夫的文档。我的预期结果应该是:
[
{
_index: myindex,
name: Alice,
hobbies: Golfing, Swimming
},
{
_index: myindex,
name: Alice,
hobbies: Golfing
},
]
然而,它正在返回所有三个。我如何使它只返回文档,这些文档的爱好都以打高尔夫球为第一爱好?我认为实现这一点的唯一方法是使用 在您的情况下,类似于:
var response = client.Search(s => s
.Query(q => q
.Script(sq => sq
.Source("doc['hobbies'].value[0]. == 'Golfing'")
)
)
)
);
var response = client.Search(s => s
.Query(q => q
.Script(sq => sq
.Source("doc['hobbies'].value[0]. == 'Golfing'")
)
)
)
);