2016-07-01 15 views
19

Tôi mới sử dụng Kibana, có dữ liệu được tải vào Elastic 5.0.0-alpha3 và đang sử dụng Kibana 5.0.0-alpha3 để Trực quan hóa. Tôi có thể hiển thị một số trường số như biểu đồ nhưng khi tôi muốn sử dụng các lĩnh vực văn bản tôi nhận được:cách đặt fielddata = true trong kibana

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. 

Tôi đã cảnh báo rằng các dữ liệu (tên nhà xuất bản) có thể được phân tích thành các trường con, nhưng tôi muốn vẫn hiển thị.

Làm cách nào để đặt fielddata=true?

EDIT: các sự cố gần đây trên Kibana github cho thấy đây là một tính năng mới trong 5.0.0 và vẫn đang chờ câu trả lời!

EDIT (sau câu trả lời của @ Val và yêu cầu trợ giúp Người mới thành lập và hy vọng những người khác sẽ thấy hữu ích). Tập lệnh nhập là:

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

Làm cách nào để bao gồm cách tiếp cận của @ Val trong trường hợp này?

Trả lời

26

Trong bản đồ ES của bạn, bạn cần phải thiết lập fielddata:true trong lĩnh vực publisher của bạn:

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

Bạn sẽ cần phải reindex dữ liệu của bạn sau khi thực hiện thay đổi này, nhưng sau đó Kibana sẽ không phàn nàn nữa.

CẬP NHẬT

Bạn có thể thực hiện truy vấn trên trong Sense UI hoặc thông qua curl

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

Hoặc bạn cũng có thể thực hiện nó trong tập tin Javascript của bạn ngay trước khi tạo tài liệu của bạn:

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

đã chấp nhận/bỏ phiếu tán. Là một newbie đàn hồi tôi rất biết ơn làm thế nào/nơi để đặt này.Xem EDIT mới nhất trong câu hỏi –

+0

Sẽ kiểm tra điều này và hy vọng sẽ cung cấp cho OK. –

+0

Khối mã nguồn thứ hai chứa JSON không hợp lệ, nó không hoạt động. – TonyQ

10

Vì bạn đang sử dụng Elastic 5.x (5.2 bây giờ là lúc tôi viết), bạn nên instea d sử dụng hỗ trợ từ khóa mới thay vì bật fielddata trên trường được lập chỉ mục.

https://www.elastic.co/guide/en/elasticsearch/reference/5.2/fielddata.html cung cấp thông tin tốt về ưu và khuyết điểm cũng như cách thiết lập điều này. Từ trang này:

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

Sau đó bạn sử dụng trường 'my_field' cho các tìm kiếm và trường 'my_field.keyword' cho quy tụ, phân loại, hoặc trong kịch bản.

my_field.keyword là những gì bạn sẽ sử dụng trong Kibana/Grafana.

5

Mã này khắc phục sự cố này.

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

Vì vậy, mã này sẽ chạy sau đó:

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

Enable fielddata trên một lĩnh vực văn bản hiện hành, điều này là cần thiết để làm hợp trên lĩnh vực này

PUT megacorp/_mapping/employee 
{ 
    "properties": { 
    "interests": { 
     "type":  "text", 
     "fielddata": true 
    } 
    } 
} 
Các vấn đề liên quan