如何在kibana中设置fielddata=true

eqzww0vc  于 2022-12-09  发布在  Kibana
关注(0)|答案(7)|浏览(163)

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

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中的一个新特性,仍在等待答案!
EDIT(跟随@瓦尔的回答,并请求Elastic新手的帮助,并希望其他人会发现它有用).摄取脚本是:

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]
          })
      }
  });

我如何将@瓦尔的方法包括在其中?

velaa5lx

velaa5lx1#

在ESMap中,需要在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
            }
          }
        }
      }
    }
});
e0uiprwp

e0uiprwp2#

由于您使用的是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中使用关键字。

mnemlml8

mnemlml83#

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

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

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

因此,要运行的代码将变为;

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

irtuqstp4#

此代码修复了此问题。

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

因此,以下代码将在此后运行:

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

3b6akqbq5#

“your_type”字段是什么?

PUT your_index/_mapping/your_type
wa7juj8i

wa7juj8i6#

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

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

qltillow7#

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

来源

相关问题