[英]Filtering Elasticsearch Results - Nest
我當前要從名為entity的類中編寫一個與“名稱”匹配的查詢,然后過濾出將GUID字段(在ES中存儲為字符串)與字符串GUID列表進行比較的結果。 如果存儲在Elasticsearch記錄中的guid與guid列表中的任何匹配,則返回這些結果。
我為此編寫的代碼是:
ISearchResponse<Entity> oResponse = null;
oResponse = _client.Search<Entity>(s => s
.Size(oReq.returnValue)
.Query(qr => qr
.Bool(b => b
.Filter(flt => flt.Terms(tms => tms.Field(fd => fd.extentUid).Terms<string>(oReq.extentUids.ToList())))
.Should(sh => sh
.Match(mt => mt.Field(fl => fl.name.ToLower()).Query(oReq.name.ToLower())))))
.Sort(srt => srt.Descending(SortSpecialField.Score)));
當我確定很多Elasticsearch記錄的GUID與列表中的一個相匹配時,以下代碼將返回0結果。 有人可以幫忙嗎?
注意:在代碼中,我首先過濾了記錄,但是我嘗試將其放在.Should()之后,並嘗試使用.PostFilter()。
提前致謝,
加里
我發現,當從elasticsearch檢索scopeUid字段時,它將字符串顯示為大寫。 即使使用代碼-tms.Field(fd => fd.extentUid.ToLower()),該字符串仍然保持大寫。
解決方案=如果未分析elasticsearch字符串,請確保要傳遞以與Elasticsearch字符串字段進行比較的字符串為大寫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.