簡體   English   中英

Elasticsearch Go嵌套查詢

[英]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 nestedfieldval1所有文檔。 非常感謝構建此查詢的任何幫助。

編輯:

我將其更改為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)
  • NestedQuery是一種類型,而不是一種功能。
  • NewTermQuery需要從json獲取值,而不是const字符串
  • 您需要解析源json以從ind1獲取值

根據下面的評論編輯修復NewTermQuery。 如果仍然無效,請提供您用於解析源代碼的完整代碼並獲取錯誤,因為您沒有在此處提供足夠的詳細信息來猜測問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM