我使用ElasticSearch和NEST C#库为.NET做了我的第一步。这是我的代码:
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”关键字,但我得到空结果集。我做错了什么?
答案 0 :(得分:3)
问题是正在使用的term
查询。这只会匹配索引的确切文本。 term
查询为useful for id type searching。
如果您正在进行自由文本搜索,请尝试使用match
查询进行良好的通用自由文本搜索。 You can read more about it here on the official docs并希望通过熟悉文档来开始探索如何构建有趣且强大的查询。
答案 1 :(得分:0)
您的帖子的索引编制需要很短的时间。如果插入Thread.Sleep(1000);在您的索引编制和查询之间,您将获得结果。