簡體   English   中英

簡單的Elasticsearch嵌套搜索查詢

[英]simple Elasticsearch nested search query

我在ES(Tweepy JSON)中有這樣的文檔

{
  "_source": {
    "id": 792477813014224900,
    "metadata": {
      "iso_language_code": "en",
      "result_type": "recent"
    },
    "retweeted": false,
    "retweet_count": 330,
    "user": {
      "id": 149250899,
      "listed_count": 0,
      "protected": false,
      "followers_count": 347,
      "entities": {
        "description": {
          "urls": []
        }
      },
      "screen_name": "Zwido_"
}

我想根據user_name字段搜索和查詢一個完整的文檔。 我嘗試了這段代碼

{
            "nested": {
                "path": "_source",
                "score_mode": "avg",
                "query": {
                    "bool": {
                        "must": [
                            {
                                "text": {"_source.user.user_name": user}
                            }
                        ]
                    }
                }
            }
}

但這不起作用,我收到了錯誤消息

TransportError(400, 'search_phase_execution_exception', 'failed to parse search source. unknown search element [nested]

我做錯了什么? 感謝幫助。

您無需指定_source字段,也可以在頂層缺少query ,而可以這樣做。

{
    "query": {
        "nested": {
            "path": "user",
            "score_mode": "avg",
            "query": {
                "bool": {
                    "must": [
                        {
                            "match": {"user.screen_name": user}
                        }
                    ]
                }
            }
        }
    }
}

UPDATE

如果您的user字段不是nested類型,則可以這樣簡單地進行操作:

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "user.screen_name": user
          }
        }
      ]
    }
  }
}

如Elasticsearch文檔中所述您應該更改數據映射以告訴Elasticsearch它是嵌套對象。 完成后,您可以查詢對象。

暫無
暫無

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

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