2015-05-05 72 views
0

用logstash處理日誌後,我的所有字段都有相同的類型'STRING,所以我想在elasticsearch中使用映射來改變某些類型,如ip,port ect ..但是我不知道該怎麼做,我是ElasticSearch的超級初學者。如何在elasticsearch中使用映射?

任何幫助?

回答

2

首先要做的是在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

相關問題