如何使用完成字段索引对象

How to index an object with completion fields

关注http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-suggesters-completion.html

我如何 index/insert (我可以做映射)使用 Nest 客户端库的对象能够提供以下选项:

"input": ...,
"output": ...,
"payload" : ...,
"weight" : ...

我希望能够在 'input' 选项中提供多个值。 无论如何都找不到使用 NEST 执行此操作的方法。

谢谢

NEST 提供 SuggestField 类型以协助索引完成建议。您不一定需要使用此类型,您可以提供自己的包含预期完成字段(inputoutput 等...),但 SuggestField 的目的是通过已经提供烘焙类型来简化整个过程。

用法:

向您正在编制索引的 document/type 添加一个建议字段:

public class MyType
{
    public SuggestField Suggest { get; set; }
}

您的映射应该类似于:

client.Map<MyType>(m => m
    .Properties(ps => ps
        .Completion(c => c.Name(x => x.Suggest).Payloads(true))
    )
);

索引示例:

var myType = new MyType
{
    Suggest = new SuggestField
    {
        Input = new [] { "Nevermind", "Nirvana" },
        Output = "Nirvana - Nevermind",
        Payload = new { id = 1234 },
        Weight = 34
    }
};

client.Index<MyType>(myType);

希望对您有所帮助。