3

我正在使用适用于 .NET 的 ElasticSearch 和 NEST C# 库迈出第一步。这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Nest;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        var setting = new ConnectionSettings(new Uri("http://localhost:9200/"));
        setting.SetDefaultIndex("Post");
        var client = new ElasticClient(setting);

        var post = new Post();
        post.id = 1;
        post.title = "the title";

        var t = client.Index(post);

        var results = client.Search<Post>(s => s.From(0)
            .Size(10)
            .Fields(f => f.id, f => f.title)
            .Query(q => q.Term(f => f.title, "title", Boost: 2.0))
            );

    }
}
public class Post
{
    public int id { get; set; }
    public string title { get; set; }
}

我期待从 Post 1 中得到结果,因为它有“title”关键字,但我得到了空的结果集。我做错了什么?

4

2 回答 2

3

问题是term正在使用的查询。这只会匹配索引的确切文本。该term查询对于 id 类型搜索很有用

如果您正在进行自由文本搜索,请尝试使用match查询进行良好的通用自由文本搜索。您可以在官方文档上阅读更多关于它的信息,并希望通过熟悉文档开始发现如何构建有趣且强大的查询。

祝你好运

于 2013-08-15T14:04:10.240 回答
0

将您的帖子编入索引需要很短的时间。如果你插入一个 Thread.Sleep(1000); 在您的索引和查询之间,您将获得结果。

于 2013-08-15T10:24:29.483 回答