为什么第一个语句会给我一些结果,而第二个语句却没有?
我尝试了很多组合,但我不知道问题出在哪里。当然,“术语”方法是我的首选方法。
var matchPhrase = _client.Search<JournalItem>(s => s
.Index("journal")
.Query(q => q.Match(m => m.OnField("typeName")
.Query("Logon"))));
var searchResults = _client.Search<JournalItem>(s => s
.Index("journal")
.Query(q => q
.Term(p => p.typeName, "Logon")
));
我正在使用 NEST 1.4 和 elasticsearch 1.4.2
最佳答案
term
查询不分析搜索词,match
查询使用与索引字段相同的分析器进行搜索。因此,如果您使用默认分析器(标准分析器)对 p.typeName
进行索引,则索引词是“登录”(标准分析器将术语分为白色和小写),作为您的搜索词“Logon”大小写混合,与 Term 查询不匹配。
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-term-query.html
关于ElasticSearch/NEST/No results with "Term"但 "Match",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28262397/