简单的Elasticsearch嵌套搜索查询

2024-09-30 06:22:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有像这样的ES(tweepyjson)文档

{
  "_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_"
}

我想根据用户名字段搜索和查询一个完整的文档。 我试过这个密码

^{pr2}$

但它不起作用,我收到了错误

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

我做错什么了? 谢谢你的帮助。在


Tags: 文档idfalsesourcesearchestypecount
2条回答

正如在elasticsearch文档here中提到的,您应该更改数据的映射,以告诉elasticsearch它是嵌套对象。完成后,就可以查询对象了。在

您不需要指定_source字段,而且您在顶层缺少一个query,可以这样做。在

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

更新

如果您的user字段不是nested类型,那么您可以简单地这样做:

^{pr2}$

相关问题 更多 >

    热门问题