Elasticsearch Terms查询无结果但Match查询正常,C#代码遇同类问题
问题:Elasticsearch Terms查询无结果,但Match查询正常(C#客户端场景)
核心现象
- 在Kibana中执行
match查询AccountId字段能返回预期结果:
GET /MY_INDEX_HERE/_search { "query": { "match": { "AccountId": "bc73afda-d4f2" } } }
- 但使用
terms查询同一值时(字符、大小写完全一致,均为小写),无法得到任何结果。
C#代码执行情况
需要在C#中实现组合查询,当前使用的查询语句如下:
.Query(q => q.Raw(strQuery) && q.Terms(c => c.Name("by_account").Field(p => p.AccountsList).Terms(accountTerms))
- 执行上述组合查询时,返回0条结果;
- 注释掉
Terms查询部分后,仅保留Raw查询可正常返回结果:
.Query(q => q.Raw(strQuery) //&& q.Terms(c => c.Name("by_account").Field(p => p.AccountsList).Terms(accountTerms))
相关变量定义
strQuery的内容:
{"bool":{"must":[{"match_phrase_prefix":{"fullname":"test"}}]}}
accountTerms的定义:
List<string> accountTerms = new List<string>(); accountTerms.Add("bc73afda-d4f2");
注:AccountId为GUID类型,示例中为不完整值。
内容的提问来源于stack exchange,提问作者Code Noob
相关产品推荐
相关产品推荐

