简单的NEST搜索不返回结果

时间:2014-05-30 21:03:37

标签: .net elasticsearch nest

这是我的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我可以看到文档已添加,但我的代码没有返回任何内容。有趣的是,我确信我之前有相同的代码。任何有关解决方案或调试的帮助将不胜感激。提前谢谢。

1 个答案:

答案 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"))
    )
);