首页 > 解决方案 > 有没有办法在 Elastic seach 中连接同一对象之间的属性?

问题描述

我有一个索引,可以根据 id 为我提供配置文件 JSON。在 JSON 中,我有两个不同的对象键,一个键作为具有 address_id 的 primary_address 对象,另一个键作为 Address 对象。地址身份证。我想在两个对象的 address_id 之间添加一个连接来过滤数据。

试过

QueryBuilders.boolQuery().must(QueryBuilders.matchAllQuery())
                            .filter(QueryBuilders.existsQuery(fieldName))
                            .filter(QueryBuilders.scriptQuery(new Script("doc['primary_address.id'].value == doc['addresses.addr_id'].value")))
                            .filter(setQuery);

但它没有获取任何结果。任何指针将不胜感激。

标签: javaelasticsearchelasticsearch-5

解决方案


此查询有效。您可以尝试单个布尔过滤器查询。

GET your_index/_search
{
  "query": {
    "bool": {
      "filter": {
        "script": {
          "script": {
              "source": "doc['f1'].value == doc['f2'].value",
              "lang": "painless"
            },
            "boost": 1
        }
      }
    }
  }
}

推荐阅读