elasticsearch根据主查询的结果查找文档

sqxo8psd  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(1)|浏览(375)

我想根据结果主查询的字段搜索文档
例如,假设我的doc只包含两个字段
用户ID
地质点
我需要一个查询,返回给我一个特定的用户ID和他的地理点周围的用户的文档我没有找到一个方法,使在一个查询,现在我做了2个查询(一个检索一个用户的文档和一个检索他的地理点周围的用户)
谢谢
更新1
第一个查询:

GET users\_search
{
"query": {
    "term": {
      "userId": "10250000075114"
    }
  }  
}

然后我对周围的用户进行第二次查询

GET users\_search
{
  "query": {
    "function_score": {
      "query": {
        "bool": {
          "must_not": {
            "term": {
              "userId": "10250000075114"
            }
          }
        }
      },
      "functions": [
        {
          "gauss": {
            "rank": {
              "origin": "0.8",
              "offset": "0.05",
              "scale": "0.1"
            }
          }
        },
        {
          "gauss": {
            "startPoint": {
              "origin": "32.547484,34.95457",
              "offset": "5km",
              "scale": "10km"
            }
          }
        },
        {
          "script_score": {
            "script": "_score"
          }
        }
      ]
    }
  }
}

其中,第二个查询中的startpoint是第一个查询的startpoint结果

roejwanj

roejwanj1#

您要查找的是子查询(在rdbms中存在),但在elasticsearch中不存在子查询。
但是你可以在你的用户ID上使用过滤器,然后只找到那些用户周围的用户,更多信息和例子请参考布尔查询。

相关问题