[英]Elasticsearch Go nested query
我正在使用olivere的彈性Go庫來運行彈性查詢 - https://godoc.org/github.com/olivere/elastic#NestedQuery
我正在嘗試查詢的數據如下所示:
"_source": {
"field1": "randVal1",
"field2": "randVal2",
"nestedfield": {
"ind1": "val1"
}
}
我正在嘗試使用Elastic Go庫中的NestedQuery
調用在NestedQuery
上運行查詢,如下nestedfield
:
aquery := elastic.NewTermQuery("ind1", "val1")
query := elastic.NestedQuery("nestedfield", aquery)
但我得到一個錯誤說明:
轉換為NestedQuery的參數太多了
我正在嘗試檢索ind1
of nestedfield
為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"))
看起來應該是:
q := elastic.NewTermQuery("nestedfield.ind1", value)
nq := elastic.NewNestedQuery("nestedfield", q)
根據下面的評論編輯修復NewTermQuery。 如果仍然無效,請提供您用於解析源代碼的完整代碼並獲取錯誤,因為您沒有在此處提供足夠的詳細信息來猜測問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.