【问题标题】:include_in_all setting in spring data elasticsearchspring data elasticsearch中的include_in_all设置
【发布时间】:2016-12-01 19:57:27
【问题描述】:

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

这可以使用spring data elasticsearch annotations吗?

【问题讨论】:

    标签: java spring elasticsearch spring-data-elasticsearch


    【解决方案1】:

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

    在我的上一个项目中,我必须进行很多简单的搜索(而不是按“_all”字段进行搜索,而是每个字段使用 1 次搜索),然后合并所有结果。我认为 Spring Data Elasticsearch 没有很好地解决这个问题。

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      【讨论】:

      • 不幸的是它没有。注释更容易,更不容易出错,这就是我喜欢它们的原因,但我可能别无选择,只能听从你的建议。尽管我认为这需要重写从注释到 json 的所有映射,因为可能无法将它们一起使用。感谢您的回复!
      • 你不需要重写映射,你可以在你的索引上检查它们并复制粘贴它们。是的,我猜api总是有点落后,所以谁知道什么时候添加这个功能。
      猜你喜欢
      • 1970-01-01
      • 2019-04-02
      • 2019-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-22
      相关资源
      最近更新 更多