Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何根据字符串数组的第一个元素从elasticsearch返回文档?_C#_.net_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Nest - Fatal编程技术网 elasticsearch,nest,C#,.net,elasticsearch,Nest" /> elasticsearch,nest,C#,.net,elasticsearch,Nest" />

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'")
            )
       )
   )
);