【问题标题】:ElasticSearch NEST Search Multiple Types & All FieldsElasticSearch NEST 搜索多种类型和所有字段
【发布时间】:2015-09-12 19:16:16
【问题描述】:

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

  • 剧院(索引)
    • 事件(类型)
    • 剧院
    • 促销
    • 通用内容

这些类型中的每一种都有自己的字段,我使用 NEST 的 Index() 方法来索引数据。我可以通过以下方式验证它是否被正确编入索引:

  • 看着http://localhost:9200/theatres/_mapping
  • 使用Head插件查看数据

作为参考,这是我的客户端配置:

// 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);

查询

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

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

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

但是,这给了我不同的结果。 NEST 是否在幕后做了我不知道的事情?还是不支持?

【问题讨论】:

  • 我建议 .Size(10) 而不是 .Take(20) 只是为了将其作为错误变量删除,尽管功能应该相同。另外我相信您可以删除 .DefaultField 并且将搜索所有字段。你能试试吗?我很好奇这个
  • @DanielHoffmann-Mitscherling 我更新了这个并且仍然得到 0 结果,而我应该得到 1。
  • 太奇怪了!您能否添加回 DefaultField("_all") 并添加 .AllTypes()?手动强制 NEST 创建所有类型的查询可能会给我们更多信息
  • @DanielHoffmann-Mitscherling 成功了!经过测试,我将其更改为.AllTypes(),这也有效。现在我想知道我是否可以简化这个查询?
  • @DanielHoffmann-Mitscherling 绝对!谢谢!

标签: c# search elasticsearch nest


【解决方案1】:

您的查询缺失.AllTypes()

您还可以使用.Types("type1", "type1")指定多种类型

所以:

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

【讨论】:

  • 我们可以在这里使用基于类型的术语过滤器吗?示例:两种类型:“type1”、“type2” type1 具有:name、locationid、type2 具有:countryid 和 stateid 使用此我们如何在此处实现基于类型的术语过滤器?
  • @MohanGopi -- 是的:.Type&lt;Type1&gt;().Type&lt;Type2&gt;()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-28
  • 2013-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多