这是我的Cat课程:
public class Cat
{
public string Id { get; set; }
public string Name { get; set; }
}
这是我的主要程序,我将一只猫添加到索引并进行简单搜索:
static void Main(string[] args)
{
var node = new Uri("http://localhost:9200");
var settings = new ConnectionSettings(node);
settings.SetDefaultIndex("mdu-test");
var client = new ElasticClient(settings);
var cat = new Cat
{
Id = "1",
Name = "Martijn",
};
var index = client.Index(cat);
var searchResults = client.Search<Cat>(s => s
.From(0)
.Size(10)
.Query(q => q
.Term(p => p.Name, "Martijn")
)
);
Cat firstCat = searchResults.Documents.ToList()[0];
}
使用Curl我可以看到文档已添加,但我的代码没有返回任何内容。有趣的是,我确信我之前有相同的代码。任何有关解决方案或调试的帮助将不胜感激。提前谢谢。
答案 0 :(得分:2)
您正在使用未经分析的term query - 这意味着它只会找到完全匹配(区分大小写)。我假设你在你的索引上使用了standard分析器(默认),这比你所有的术语都要低。
如果您确实需要完全匹配,请在映射中将Name
设置为not_analyzed
,否则您可能希望使用match query,如下所示:
var searchResults = client.Search<Cat>(s => s
.From(0)
.Size(10)
.Query(q => q
.Match(m => m
.OnField(p => p.Name)
.Query("Martijn"))
)
);