【问题标题】:Elasticsearch find documents based on result of a main queryElasticsearch 根据主查询的结果查找文档
【发布时间】:2020-11-18 22:04:05
【问题描述】:

我想根据结果主查询的字段搜索文档

例如。假设我的文档只包含两个字段

  1. 用户ID
  2. 地理位置

我需要一个查询来返回特定用户 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结果

【问题讨论】:

  • 您能否分享一些示例索引数据、预期的搜索结果以及您尝试过的查询。
  • @Bhavya 我用查询更新了我的问题

标签: elasticsearch


【解决方案1】:

您要查找的是子查询(存在于 RDBMS 中),但 Elasticsearch 中不存在子查询。

但是您可以在您的用户 ID 上使用过滤器,然后仅查找这些用户周围的用户,请参阅 boolean query 了解更多信息和示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    相关资源
    最近更新 更多