簡體   English   中英

ElasticSearch NEST搜索多個類型和所有字段

[英]ElasticSearch NEST Search Multiple Types & All Fields

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

查詢

現在,對於查詢,我想搜索索引中的所有類型和所有字段。 使用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是否在幕后做了我不知道的事情? 或者這不受支持?

您的查詢丟失.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))))));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM