ElasticSearch / NEST / "Term" 没有结果但 "Match"
ElasticSearch / NEST / No results with "Term" but with "Match"
为什么第一个语句给了我一些结果而第二个语句没有?
我尝试了很多组合,但我不知道问题出在哪里。当然,"Term"-方法是我的首选方法。
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'(标准分析器将术语分为白色和小写),作为您的搜索词 'Logon' 有大小写混合,它将与 Term 查询不匹配。
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-term-query.html
为什么第一个语句给了我一些结果而第二个语句没有?
我尝试了很多组合,但我不知道问题出在哪里。当然,"Term"-方法是我的首选方法。
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'(标准分析器将术语分为白色和小写),作为您的搜索词 'Logon' 有大小写混合,它将与 Term 查询不匹配。
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-term-query.html