【问题标题】:how to set fielddata=true in kibana如何在kibana中设置fielddata = true
【发布时间】:2016-07-01 12:54:33
【问题描述】:

我是 Kibana 的新手,已将数据加载到 Elastic 5.0.0-alpha3 中,并且正在使用 Kibana 5.0.0-alpha3 进行可视化。我可以将一些数字字段显示为直方图,但是当我想使用文本字段时,我得到:

Visualize: Fielddata is disabled on text fields by default. Set fielddata=true on [publisher] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory.

我被警告说数据(发布者的名称)可能已被分析到子字段中,但我还是想显示。

如何设置fielddata=true

编辑:最近 Kibana github 上的问题表明这是 5.0.0 中的一个新功能,仍在等待答案!

编辑(按照@Val 的回答,并寻求弹性新手帮助,并希望其他人会发现它有用)。摄取脚本是:

fs = require('fs')

var elasticsearch = require('elasticsearch');
var client = new elasticsearch.Client({
 host: 'localhost:9200',
 log: 'trace'
});

fs.readFile('/Users/pm286/workspace/cmdev/getpapers/20160602/crossref_results.json', (err, data) => {
  if (err) throw err;
   document = JSON.parse(data)
  document = JSON.parse(data)

  for(i=0;i<document.length;i++) {
      client.create({
          index: 'index',
          type: 'type',
          body: document[i]
          })
      }
  });

我如何在其中包含@Val 的方法?

【问题讨论】:

  • 对于文本字段的聚合,您不再需要设置 'fieldData=true'。只需使用 '.keyword' 字段。有关详细信息,请参阅 Patrick B 的回答。

标签: kibana


【解决方案1】:

在您的 ES 映射中,您需要在您的 publisher 字段中设置 fielddata:true

PUT your_index/_mapping/your_type
{
   "your_type": {
      "properties": {
        "publisher": {
          "type": "text",
          "fielddata": true
        }
      }
   }
}

您需要在进行此更改后重新索引您的数据,但之后 Kibana 不会再抱怨了。

更新

您可以在Sense UI 或通过 curl 执行上述查询

curl -XPUT http://localhost:9200/index -d '{
  "mappings": {
    "type": {
      "properties": {
        "publisher": {
          "type": "text",
          "fielddata": true
        }
      }
    }
  }
}'

或者您也可以在创建文档之前在 Javascript 文件中执行它:

client.indices.create({
  index: 'index',
  body: {
      "mappings": {
        "type": {
          "properties": {
            "publisher": {
              "type": "text",
              "fielddata": true
            }
          }
        }
      }
    }
});

【讨论】:

  • 已接受/赞成。作为一名 Elastic 新手,我很高兴知道如何/在哪里放置它。查看有问题的最新编辑
  • 将对此进行测试并希望通过。
  • 第二个源代码块包含无效的 JSON,它不是工作示例。
  • @RuiFRibeiro 是的,最好是
  • 嗨,我添加了“fielddata”:是的,但仍然出现同样的错误。
【解决方案2】:

由于您使用的是 Elastic 5.x(我写这篇文章时 5.2 已经发布),您应该改用新的关键字支持,而不是在索引字段上启用 fielddata。

https://www.elastic.co/guide/en/elasticsearch/reference/5.2/fielddata.html 提供了有关利弊以及如何设置的良好信息。 从页面:

PUT my_index
{
  "mappings": {
    "my_type": {
      "properties": {
        "my_field": { 
          "type": "text",
          "fields": {
            "keyword": { 
              "type": "keyword"
            }
          }
        }
      }
    }
  }
}

然后,您可以使用“my_field”字段进行搜索,并使用“my_field.keyword”字段进行聚合、排序或在脚本中。

my_field.keyword 是您将在 Kibana / Grafana 中使用的。

【讨论】:

  • 我知道 OP 明确询问如何设置 fielddata = true,但这个答案是大多数用户想要的。 Elastic 团队本身非常不鼓励设置 fielddata = true,并且使用关键字会产生所需的结果,而不会对性能产生负面影响。 +1
【解决方案3】:

如果您来自“ElasticsearchThe Definitive Guide”一书,请尝试更改此内容

"terms" : { "field" : "interests" },

"terms" : { "field" : "interests.keyword" },

所以,要运行的代码就变成了;

GET /megacorp/employee/_search
{
  "aggs": {
    "all_interests": {
      "terms": { "field": "interests.keyword"}
    }
  }
}

【讨论】:

  • 我们在构建代理以使用 Body Builder JS 进行搜索时遇到了这个问题 - 当对带有空格的文本字段应用排序时,需要使用关键字访问它。
  • 谢谢!它确实有效,并且没有对 fielddata:true + reindex 进行任何额外的更改。这样可以减少头痛:)
【解决方案4】:

这段代码解决了这个问题。

PUT megacorp/_mapping/employee
{
   "employee": {
      "properties": {
        "interests": {
          "type": "text",
          "fielddata": true
        }
      }
   }
}

所以这段代码会在之后运行:

GET /megacorp/employee/_search
    {
      "aggs": {
        "all_interests": {
          "terms": { "field": "interests"}
        }
      }
    }

【讨论】:

    【解决方案5】:

    在现有文本字段上启用 fielddata,这是对该字段进行聚合所必需的

    PUT megacorp/_mapping/employee
    {
      "properties": {
        "interests": { 
          "type":     "text",
          "fielddata": true
        }
      }
    }
    

    【讨论】:

      【解决方案6】:

      “your_type”字段是什么?

      PUT your_index/_mapping/your_type
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-09-26
        相关资源
        最近更新 更多