【问题标题】:Simple NEST search not returning results简单的 NEST 搜索不返回结果
【发布时间】:2025-12-22 00:05:13
【问题描述】:

这是我的猫类:

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

【问题讨论】:

    标签: .net elasticsearch nest


    【解决方案1】:

    您正在使用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"))
        )
    );
    

    【讨论】:

    • 是的,就是这样。谢谢!很好的解释!
    • 哈哈,我喜欢我在这里被用作猫的例子,因为我也是一个巨大的猫人,所以很奇怪:)