我使用olivere的弹性去图书馆运行弹性查询 - https://godoc.org/github.com/olivere/elastic#NestedQueryElasticsearch转到嵌套查询
的数据我想上看起来这样的查询:
"_source": {
"field1": "randVal1",
"field2": "randVal2",
"nestedfield": {
"ind1": "val1"
}
}
我想使用NestedQuery
呼叫从弹性去图书馆,像这样运行在nestedfield
查询:
aquery := elastic.NewTermQuery("ind1", "val1")
query := elastic.NestedQuery("nestedfield", aquery)
但我得到一个错误,指出:
个太多的参数转换为NestedQuery
我试图检索所有的文件,其中的nestedfield
的ind1
是val1
。希望在构建这个查询时有任何帮助。
编辑:
我把它改成NewNestedQuery,现在它不给这个错误。但是,它不会返回任何结果,即使该文档存在于索引中,我也能够在非嵌套字段上进行查询。
我尝试这样做:
aquery := elastic.NewTermQuery("ind1", "val1")
query := elastic.NewNestedQuery("nestedfield", aquery)
这:
query := elastic.NewNestedQuery("nestedfield", elastic.NewMatchQuery("nestedfield.ind1", "val1"))
但他们都给予0的结果。任何想法我做错了什么?
编辑#2
的映射是:
"field1": { "type": "string" },
"field2": { "type": "string" },
"nestedfield": {
"type": "nested"
}
什么最终的工作是这样的:
query := elastic.NewMatchQuery("nestedfield.ind1", "val1")
我是能够增加额外的字段为 'nestedfield',做像这样的查询:
query := elastic.NewBoolQuery().Filter(elastic.NewMatchQuery("nestedfield.ind1", "val1"), elastic.NewMatchQuery("nestedfield.ind2", "val2"))
分享您的地图。我怀疑“嵌套字段”实际上不是嵌套文档。 – Peter
我已经在下面调整了答案,但是您应该尝试给出用于搜索的完整代码的更多详细信息。 –
共享映射和最终工作的结果 – covfefe