【问题标题】:Elasticsearch CreateIndex() not enough argumentsElasticsearch CreateIndex() 没有足够的参数
【发布时间】:2017-03-29 09:21:09
【问题描述】:

我正在尝试将 Elasticsearch for GO 与这个著名的 repo 一起使用

但是,当我尝试创建indexdocs,并作为示例here)时:

    // Define an elastic client 
    client, err := elastic.NewClient(elastic.SetURL("host1"))
    if err != nil {
        client, err := elastic.NewClient(elastic.SetURL("host2"))
        if err != nil {
            fmt.Println("Error when connecting Elasticsearch host");    
        }
    }

    // Create an index
    _, err = client.CreateIndex("events").Do()
    if err != nil {
        fmt.Println("Error when creating Elasticsearch index"); 
        panic(err)
    }

我收到以下错误,我不明白:

调用 client.CreateIndex("events").Do 时没有足够的参数

这是为什么呢?我在这里想念什么?

【问题讨论】:

    标签: elasticsearch go


    【解决方案1】:

    IndicesCreateService.Do() function 期望 context.Context 被传递。

    因此,您需要导入"golang.org/x/net/context",然后将您的调用更改为:

    import (
        ... your other imports...    
        "golang.org/x/net/context"
    )
    ...
    _, err := client.CreateIndex("events").Do(context.TODO())
                                                    ^
                                                    |
                                                 add this
    

    您还可以检查indices_create_test.go 测试用例以了解它是如何完成的。

    【讨论】:

    • 谢谢!虽然我没有得到.TODO()。那应该是什么? (感谢有关测试用例的建议)
    • 这只是返回一个您可以使用的非空空上下文:godoc.org/golang.org/x/net/context#TODO
    猜你喜欢
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多