include_in_all 在 spring 数据 elasticsearch 中设置

include_in_all setting in spring data elasticsearch

根据 Elasticsearch documentation 可以使用 include_in_all 设置从 _all 字段中排除一个字段(设置为 false)。我需要从 _all 中排除一个字段,并且我正在使用 spring 数据 elasticsearch 确实定义了我的映射。我还没有找到这样做的方法。

是否可以使用 spring 数据 elasticsearch 注释?

您可以将类型的映射保存到 json 文件中。然后将“"include_in_all": false”添加到要排除的字段。这应该看起来像这样。

{
  "my_type": {
    "properties": {
      "excludedField": {
        "type": "text",
        "include_in_all": false
      }
    }
  }
}

然后使用您最喜欢的 JSON reader 加载文件,将其解析为字符串并使用 elasticsearch api 更改映射。

client.admin().indices()
      .preparePutMapping("my_index")
      .setType("my_type")
      .setSource(loadedFileString)
      .get();

编辑: 我刚刚注意到您想为其使用注释。也许 @Field 注释有一个参数?对不起,我对注释没有经验。

不幸的是,Spring Data Elasticsearch 不能做这件事。改进请求已经一年了,但它的优先级是次要的,所以现在没有希望: https://jira.spring.io/browse/DATAES-226

在我的上一个项目中,我不得不做很多简单的搜索(而不是通过“_all”字段进行搜索,我对每个字段使用了 1 次搜索),然后我将所有结果合并在一起。我认为 Spring Data Elasticsearch 无法很好地解决该问题。