Elasticsearch文档别名

时间:2015-10-30 09:18:59

标签: elasticsearch mapping

我有多个映射来自同一个数据源,但差异很小,如下例所示。

{
  "type_A" : {
    "properties" : {
      "name" : {
        "type" : "string"
      }
      "meta_A" : {
        "type" : "string"
      }
    }
  }
}


{
  "type_B" : {
    "properties" : {
      "name" : {
        "type" : "string"
      }
      "meta_B" : {
        "type" : "string"
      }
    }
  }
}

我希望能够:

  • 直接查询特定字段(例如meta_A)
  • 直接查询datsource
  • 中的所有文档
  • 查询特定映射中的所有文档

我正在研究的是类型过滤器,所以我最好能写一个这样的查询:

{
  "query": {
    "filtered" : {
      "filter" : {
        "type" : { "value" : "unified_type" }
      }
    }
    // other query clauses
  }
}

因此,我不想在类型过滤器的or子句中输入"type_A""type_B",而是希望拥有此"unified_type",但不要放弃直接查询{{1}的可能性}}

我怎么能得到这个?

1 个答案:

答案 0 :(得分:0)

我不认为这是可能的。但是,您可以使用copy_to功能,因此您可以使用现在的字段并将其值复制到统一名称中。

  

first_name参数允许您创建自定义_all字段。在   换句话说,可以将多个字段的值复制到一个组中   字段,然后可以作为单个字段查询。例如,   可以将last_namefull_name字段复制到"meta_A"字段   如下:

因此,您要将"meta_B""unified_meta"复制到某个private String notNull(String input){ if (input != null) { return input.trim(); } return ""; } 字段中并查询此字段。