弹性搜索NEST - 当我们提到类型名称时,搜索不返回任何记录

时间:2014-02-25 12:01:39

标签: elasticsearch nest

尝试过的代码: -

public class Company
{
    public long Number { get; set; }
    public string Name{ get; set; }
}

我的问题是:如果我在搜索标签中提到类型名称,我就无法获得任何结果。

1)显示结果

var rowsList= client.Search(s => s.MatchAll()).Documents.ToList();

2)返回0行

var newr = client.Search<Company>(s => s.MatchAll()).Documents.ToList();

1 个答案:

答案 0 :(得分:1)

键入的搜索默认为

/[inferred_index]/[inferred_typename]/_search

如果你想搜索所有索引和类型,你必须明确它

client.Search<Company>(s=>s
    .AllIndices()
    .AllTypes()
    .MatchAll()
)

这将在/_search

上进行搜索

您可以控制嵌套如何推断索引和类型名称,如下所示:

var settings = new ConnectionSettings(uri)
    .SetDefaultIndex("my-default-index")
    .MapDefaultTypeNames(d=>d
       .Add(typeof(Company), "company-type")
    )
    MapDefaultTypeIndices(d=>d
        .Add(typeof(Company), "company-index")
    )
    SetDefaultTypeNameInferrer(s=>s.ToLowerInvariant())

现在,如果您搜索<Company>,则默认为/company-index/company-type/_search

如果您搜索<Person>,它会在/my-default-index/person/_search上进行查询。