簡體   English   中英

使用帶有多個參數的NEST進行彈性搜索

[英]Elastic search using NEST with multiple parameters

我有一個帶有名稱,類別,位置列的sql表。 我正在使用帶有NEST的彈性搜索。 我的查詢是這樣的:

var result = client.Search<Models.Search.Poll>(s => s.Query(q => q.Fuzzy(f => f.OnField(p => p.Name).Value(query))))));

因此,如果有一個名稱為“我們在這里”的記錄,而用戶搜索“是”,則返回結果。

現在,我需要向此查詢添加另外兩個參數類別和位置:

所以我做到了:

var result = client.Search<Models.Search.Poll>(s => s.Query(q => q.Fuzzy(f => f.OnField(p => p.Name).Value(query).OnField(r => r.Category).Value(category))));

但它現在不適用於查詢字段。 但現在可以用於類別。 這是我輸入名稱但不選擇類別時得到的結果:

StatusCode: OK, 
    Method: POST, 
    Url: http://server.abc.com:9200/pollit-dev/polls/_search, 
    Request: {
  "query": {
    "fuzzy": {
      "category": {
        "value": "Select a Category"
      }
    }
  }
}, 
    Response: {"took":2892,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":0,"max_score":null,"hits":[]}}

我很好地嘗試了這一點:

var result = client.Search<Models.Search.Poll>(s => s.MatchAll().Query(q => q.Term(p => p.Name, query) || q.Term(p => p.Category,category) || q.Term(p => p.Location, Location)

但到目前為止沒有運氣。

問候,Asif Hameed

您有多種選擇。 第一個幾乎和您一樣,但是您必須在其中使用Bool條件。

var result = client.Search<Models.Search.Poll>(s => s
      .MatchAll()
      .Query(q => q
         .Bool(b => b
           .Must(m => m.Term(p => p.Name, query) || m.Term(p => p.Category,category) || m.Term(p => p.Location, Location))
         )
       )
   );

現在,另一個選擇是使用queryContainers。 像這樣:

var result = _Instance.Search<Models.Search.Poll>(q => q
                .Query(qq =>
                {
                    QueryContainer termQuery = null;
                    QueryContainer locationQuery = null;
                    QueryContainer categoryQuery = null;

                    termQuery = qq.Term(p => p.Name, query);
                    categoryQuery = qq.Term(p => p.Category,category);
                    locationQuery = qq.Term(p => p.Location, Location);

                    return termQuery || categoryQuery || locationQuery;
                    })
           );

您還可以詳細說明QueryContainers並在其中添加多個搜索參數。 希望這對您有所幫助。 愉快的一天!

暫無
暫無

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

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