【问题标题】:Using Nest Client to load completion fields in Elasticsearch使用 Nest Client 在 Elasticsearch 中加载完成字段
【发布时间】:2014-03-14 04:07:55
【问题描述】:

我想使用 Nest 将完成建议字段填充到索引中。读完这个ElasticSearch blog post about implementing a completion field我看到你可以拥有以下属性:

  • 输入数组
  • 单输出
  • 重量
  • 有效载荷

我假设要将这些数据加载到索引中,我需要在包含上述字段的搜索对象上包含一个实体?

【问题讨论】:

    标签: elasticsearch nest


    【解决方案1】:

    我终于能够通过创建几个类并遵循FluentMappingFullExample 单元测试来加载完成字段,特别是以下部分:

                        .Completion(s=>s
                        .Name(p=>p.Name.Suffix("completion"))
                        .IndexAnalyzer("standard")
                        .SearchAnalyzer("standard")
                        .MaxInputLength(20)
                        .Payloads()
                        .PreservePositionIncrements()
                        .PreserveSeparators()
                    )
    

    对于我的搜索类型实体,我创建了一个名为建议的字段并将其设置为 CompletionField 类型。

     public class CompletionField
    {
        public CompletionField()
        {
            Input = new List<string>();
        }
    
        public List<string> Input { get; set; }
        //public string Output { get; set; }
        public int Weight { get; set; }
        public Payload Payload { get; set; }
    }
    
    public class Payload
    {
        public int ID { get; set; }
    }
    

    在我使用 dapper 从 db 加载我的实体后,然后我循环遍历结果并使用我想要的适当输入加载我的完成字段。然后,我能够成功调用建议 API 并查询此数据。我希望这对其他人有帮助。

    【讨论】:

    • 遇到和你一样的问题。你是如何索引这些对象的?你能发布你的索引查询和搜索查询吗?谢谢
    • 您的样本看起来非常不相关。我找不到任何联系。当您索引 Completion 时,您没有将其类型定义为 CompletionField。你用completionField做什么?我猜你想或者你应该做这样的事情github.com/elastic/elasticsearch-net-example#part-5-suggestions
    猜你喜欢
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    相关资源
    最近更新 更多