Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Golang和从Mongo对象创建用于Elasticsearch的嵌套索引_Go_Mgo_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Go,Mgo,elasticsearch" /> elasticsearch,Go,Mgo,elasticsearch" />

Golang和从Mongo对象创建用于Elasticsearch的嵌套索引

Golang和从Mongo对象创建用于Elasticsearch的嵌套索引,go,mgo,elasticsearch,Go,Mgo,elasticsearch,我在学咕噜。我正在尝试将Mongo中的嵌套对象索引到嵌套索引Elasticsearch中 对于Mongo对象,我创建了两个结构: type Parent struct { Client_Mac string Visit NestedVisit `json:"visits" elastic:"type:nested"` } type NestedVisit struct { Last_Seen time.Time `json:"last_seen" el

我在学咕噜。我正在尝试将Mongo中的嵌套对象索引到嵌套索引Elasticsearch中

对于Mongo对象,我创建了两个结构:

type Parent struct {
    Client_Mac   string
    Visit        NestedVisit `json:"visits" elastic:"type:nested"`
}

type NestedVisit struct {
    Last_Seen time.Time `json:"last_seen" elastic:"type:date"`
}
我只需要在数组中循环并索引每个数组,包括嵌套索引

为了(我自己的)速度,我在Golang外创建了一个嵌套映射:

{
    "test": {
        "mappings": {
            "test": {
                "properties": {
                    "client_mac": {
                        "type": "string"
                    },
                    "visits": {
                        "type": "nested",
                        "properties": {
                            "last_seen": {
                                "type": "date",
                                "format": "dateOptionalTime"
                            },
                        }
                    }
                }
            }
        }
    }
}
我通过循环Mongo对象开始索引对象。我的主要职能是:

func main() {

    db := session.DB("test")
    data := GetData(db)

    for _, each := range data {
        ReIndex(each)
    }

 }
ReIndex函数如下所示:

func ReIndex(s Parent) {

    var m map[string]int
    m = make(map[string]int)

    for _, each := range s.Visits {
            m["last_seen"] = each.Last_Seen
    }

    fmt.Printf("Test: %v\n", m)

    visit1 := Parent{Client_Mac: s.Client_Mac, Visit: NestedVisit{Last_Seen: 1000}}
    put1, err := el.Index().
           Index("test").
           Type("test").
           Id(s.Id.Hex()).
           BodyJson(visit1).
           Do()
    if err != nil {
           panic(err)
    }

    fmt.Printf("Indexed test %s to index %s, type %s\n", put1.Id, put1.Index, put1.Type)
}
这还可以,但我需要的访问是一系列的访问

因此,在循环中,我尝试循环访问数组并创建了一个映射:

var m map[string]int
m = make(map[string]int)

for _, each := range s.Visits {
        m["last_seen"] = each.Last_Seen
}
然后我尝试更改父结构:

type Parent struct {
   ... 
   Visit        interface{} `json:"visits" elastic:"type:nested"`
}

visit1 := Parent{Client_Mac: s.Client_Mac, Visit: m}
但该指数如下所示:

"visits":{"last_seen":1000}
有人能解释一下什么类型的访问应该有利于阵列


另外,我正在使用mgo和。

您的问题中遗漏了重要的细节。什么是
s
?代表json映射的某种go类型的变量,对吗?什么类型的?编译器是否产生错误?如果是,它们是什么?你能构造一个最小的程序来演示这个问题吗?@Anonymous试图说得有点太简洁了。如果按上述方式运行,则不会出现错误,但嵌套访问索引也不是数组。我不知道如何正确地将映射添加到结构中,以便对其进行索引。我不相信您不会出错
Parent
没有字段
Visits
,而
Last(u)
是一个
time.time
而不是
int
。为了解决您的问题,我怀疑您想将
Visite NestedVisite
更改为
Visits[]NestedVisite
。我只是想寻求帮助,仅此而已。很明显,我已经更改了一些名称并删除了一些行。