用logstash處理日誌後,我的所有字段都有相同的類型'STRING,所以我想在elasticsearch中使用映射來改變某些類型,如ip,port ect ..但是我不知道該怎麼做,我是ElasticSearch的超級初學者。如何在elasticsearch中使用映射?
任何幫助?
用logstash處理日誌後,我的所有字段都有相同的類型'STRING,所以我想在elasticsearch中使用映射來改變某些類型,如ip,port ect ..但是我不知道該怎麼做,我是ElasticSearch的超級初學者。如何在elasticsearch中使用映射?
任何幫助?
首先要做的是在Elasticsearch中安裝Marvel插件。它可以讓你與Elasticsearch REST API的工作非常容易 - 索引文件,修改映射等
轉到Elasticsearch夾,然後運行:
bin/plugin -i elasticsearch/marvel/latest
然後去http://localhost:9200/_plugin/marvel/sense/index.html從訪問奇蹟感您可以發送命令。奇蹟本身爲您提供關於Elasticsearch指標,性能統計等:http://localhost:9200/_plugin/marvel/
在儀表盤感,你可以運行:
GET /_cat/indices
學會在你的Elasticsearch實例存在什麼樣的指標。
假設有一個名爲logstash
的索引。
您可以通過運行檢查其映射:
GET /logstash/_mapping
Elasticsearch將返回描述索引的映射JSON文檔。這可能是這樣的:
{
"logstash": {
"mappings": {
"doc": {
"properties": {
"Foo": {
"properties": {
"x": {
"type": "String"
},
"y": {
"type": "String"
}
}
}
}
}
}
}
}
......在這種情況下doc
是文檔類型(集合)中,你的索引文件。在某種意義上說,你可以索引的文件如下:
PUT logstash/doc/1
{
"Foo": {
"x":"500",
"y":"200"
}
}
...這是對指數的命令ID 1
下的JSON對象。
一旦諸如Foo.x
之類的文檔字段具有String類型,則不能將其更改爲數字。您必須先設置映射,然後重新索引。
首先刪除索引:
DELETE logstash
然後如下創建索引並設置映射:
PUT logstash
PUT logstash/doc/_mapping
{
"doc": {
"properties": {
"Foo": {
"properties": {
"x": {
"type": "long"
},
"y": {
"type": "long"
}
}
}
}
}
}
現在,即使你的索引與屬性JSON字符串,Elastisearch一個文檔將它們轉換爲數字:
PUT logstash/doc/1
{
"Foo": {
"x":"500",
"y":"200"
}
}
搜索新文檔:
GET logstash/_search
注意,返回的文檔,在_source
場,看起來正是你把它交給Elasticsearch的方式 - 這是有目的的,Elasticsearch始終保留原始文檔這種方式。這些屬性雖然被編號爲數字。您可以運行一系列查詢,以確認:
GET logstash/_search
{
"query":{
"range" : {
"Foo.x" : {
"gte" : 500
}
}
}
}
對於Logstash,你可能要設置索引名logstash-*
一個映射模板,因爲Logstash自動創建新的指數:http://www.elastic.co/guide/en/elasticsearch/reference/1.5/indices-templates.html