Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/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#_Search_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Nest - Fatal编程技术网 elasticsearch,nest,C#,Search,elasticsearch,Nest" /> elasticsearch,nest,C#,Search,elasticsearch,Nest" />

C# ElasticSearch嵌套搜索多种类型&;所有领域

C# ElasticSearch嵌套搜索多种类型&;所有领域,c#,search,elasticsearch,nest,C#,Search,elasticsearch,Nest,使用ElasticSearch NEST,我很难从查询中获得预期的结果。我的索引/类型布局如下: 剧院(索引) 事件(类型) 剧院 晋升 一般内容 每种类型都有自己的字段,我使用NEST的Index()方法对数据进行索引。我可以通过以下方式验证它是否被正确索引: 查看http://localhost:9200/theatres/_mapping 使用插件查看数据 以下是我的客户端配置,仅供参考: // TODO: Put settings in config var node = n

使用ElasticSearch NEST,我很难从查询中获得预期的结果。我的索引/类型布局如下:

  • 剧院(索引)
    • 事件(类型)
    • 剧院
    • 晋升
    • 一般内容
每种类型都有自己的字段,我使用NEST的Index()方法对数据进行索引。我可以通过以下方式验证它是否被正确索引:

  • 查看
    http://localhost:9200/theatres/_mapping
  • 使用插件查看数据
以下是我的客户端配置,仅供参考:

// TODO: Put settings in config
var node = new Uri("http://localhost:9200");
var connSettings = new ConnectionSettings(node);
connSettings.SetDefaultIndex("theatres");
connSettings.ThrowOnElasticsearchServerExceptions();

var client = new ElasticClient(connSettings);
查询

现在,对于查询,我想搜索索引中的所有类型和所有字段。使用Head插件,我能够生成查询并获得预期结果:

使用它生成的查询,我尝试了以下嵌套查询:

var query = "waukesha"; // This would be passed in

var resp = client.Search<dynamic>(s => s
   .From(0)
   .Take(10)
   .Query(qry => qry
       .Bool(b => b
       .Must(m => m
           .QueryString(qs => qs
               .DefaultField("_all")
               .Query(query))))));
var query=“waukesha”//这将被传递进来
var resp=client.Search(s=>s
.从(0)
.Take(10)
.Query(qry=>qry
.Bool(b=>b
.Must(m=>m
.QueryString(qs=>qs
.DefaultField(“全部”)
.查询(查询(()())));

然而,这给了我一个不同的结果。NEST在幕后做了我不知道的事情吗?或者这不受支持?

您的查询缺少
.AllTypes()

您还可以使用
.types(“type1”、“type1”)

因此:

var query=“waukesha”//这将被传递进来
var resp=client.Search(s=>s
.AllTypes()
.从(0)
.Take(10)
.Query(qry=>qry
.Bool(b=>b
.Must(m=>m
.QueryString(qs=>qs
.DefaultField(“全部”)
.查询(查询(()())));

我建议使用.Size(10)而不是.Take(20),只是为了将其作为错误变量删除,尽管功能应该相同。此外,我相信您可以删除.DefaultField,并将搜索所有字段。你能试试吗?我很好奇this@DanielHoffmann-Mitscherling我更新了这个,结果仍然是0,而我应该得到1。真奇怪!您能否重新添加DefaultField(“\u all”)并添加.AllTypes()?手动强制NEST创建具有所有类型的查询可能会给我们带来更多好处info@DanielHoffmann-米舍林成功了!测试之后,我将其更改为
.AllTypes()
,这也可以使用。现在我想知道我是否可以简化这个问题?@DanielHoffmann Mitscherling绝对!谢谢我们可以在这里使用基于类型的术语过滤器吗。示例:两种类型:“type1”、“type2”type1有:name、locationid,type2有:countryid和stateid使用此选项如何在此处实现基于类型的术语筛选?@MohanGopi--Yes:
.type().type()
var query = "waukesha"; // This would be passed in

var resp = client.Search<dynamic>(s => s
   .AllTypes()
   .From(0)
   .Take(10)
   .Query(qry => qry
       .Bool(b => b
       .Must(m => m
           .QueryString(qs => qs
               .DefaultField("_all")
               .Query(query))))));