java - ElasticSearch Java API : Enabling fielddata on text fields

标签 java elasticsearch elasticsearch-java-api

我已使用 ElasticSearch Java API 创建了 ElasticSearch 索引。现在我想对此索引中存储的数据执行一些聚合,但出现以下错误:

      "reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [item] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead."

正如建议的那样link ,要解决此问题,我应该在“item”文本字段上启用 fielddata,但是如何使用 ElasticSearch Java API 来做到这一点?

另一种方法可能是将“item”字段映射为 keyword ,但同样的问题:如何使用 ElasticSearch Java API 做到这一点?

最佳答案

对于新索引,您可以在创建时通过执行以下操作来设置映射:

CreateIndexRequest createIndexRequest = new CreateIndexRequest(indexName);
String source = // probably read the mapping from a file
createIndexRequest.source(source, XContentType.JSON);
restHighLevelClient.indices().create(createIndexRequest);

映射应与您针对其余端点执行的请求具有相同的格式,类似于:

{
  "mappings": {
    "your_type": {
      "properties": {
        "your_property": {
          "type": "keyword"
        }
      }
    }
  }
}

关于java - ElasticSearch Java API : Enabling fielddata on text fields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47579352/

相关文章:

elasticsearch - 抛出异常时的Elasticsearch Java API访问源

java - 跨越 JTable 中两个单元格的图形内容

java - 如何从 Java POJO 调用单例方法?

java - 如何在 Android 中创建 Google 注销类文件

java - log4j2 在 Web 应用程序中错误启动

java - 创建 elasticsearch 客户端抛出 netty IllegalStateException

elasticsearch - Dokku:如何在插件中更改Elasticsearch的版本

elasticsearch - 如何通过 JSON 将查询设置为 Elasticsearch SearchRequest?

elasticsearch - 为什么添加日期范围过滤器会禁用aggs?

elasticsearch - Spring 数据elasticsearch : setting sort value to entity field