在索引文档时,Elasticsearch 会自动为缺少的字段创建映射(文档内部)
是否可以配置(或)有一个配置,我们可以指示elasticsearch不要创建缺失的字段,而是忽略。
基本上,我们使用 Java POJO,我们使用相同 POJO 的实例来索引文档(通过使用 GSON 库将此实例转换为 json),并且还将此 POJO 中的一些字段用于某些外部目的。
所以当我们设置那些用于外部目的的字段,但将文档发送到 Elasticsearch 时,这些额外的字段也会被保存。我们想避免这种情况。
我使用此配置读取了我的日志文件(cron_log,auth_log,mail_log等):
file{
path => '/path/to/log/file/*_log'
}
Run Code Online (Sandbox Code Playgroud)
所以我读了我的日志文件并检查:
if(path) ~= "cron" -----match--------
if(path) ~= "auth" -----match--------
Run Code Online (Sandbox Code Playgroud)
现在我有一个目录,如:Server1 Server2 Server3
......在Server 1
子目录中:authlog cronlog
.....在authlog内部有子目录日期明智(如2014.05.26, 2014.05.27
)最终包含当天的日志文件,我必须解析.
所以目前我有一个用于读取文件的配置文件, *_log
我用它来运行该配置文件并/path/to/log/file/*_log
解析了所有存在的日志文件.
现在我必须从许多目录中读取(如上所述).
我是否必须为每个目录编写单独的配置文件?
使用logstash实现这一目标的最佳方法是什么?
以下是logstash.err的错误:
法拉第::连接失败:文件结束到达/ opt/logst///////////////////////////////////////////////////////////////////////////////////////////vendor/bundle/jruby/1.9/gems/faraday-0.9.0/lib/faraday/rack_builder.rb:139 run_request atopt /logstash/vendor/bundle/jruby/1.9/gems/faraday-0.9.0/lib/ faraday/connection.rb:377 perform_request at /opt/logstash/vendor/bundle/jruby/1.9/gems/elasticsearch-transport-1.0.1/lib/elasticsearch/transport/transport/http/faraday.rb:24在org打电话/jruby/RubyProc.java:271 perform_request at /opt/logstash/vendor/bundle/jruby/1.9/gems/elasticsearch-transport-1.0.1/lib/elasticsearch/transport/transport/base.rb:187 perform_request at/opt /logstash/vendor/bundle/jruby/1.9/gems/elasticsearch-transport-1.0.1/lib/elasticsearch/transport/transport/http/faraday.rb:20 perform_request at /opt/logstash/vendor/bundle/jruby/1.9 /gems/elasticsearch-transport-1.0.1/lib/elasticsearch/transport/client.rb:102 perform_request at/opt/logstash/v endor/bundle/jruby/1.9/gems/elasticsearch-api-1.0.1/lib/elasticsearch/api/namespace/common.rb:21 get_template at /opt/logstash/vendor/bundle/jruby/1.9/gems/elasticsearch- api-1.0.1/lib/elasticsearch/api/actions/indices/get_template.rb:24 template_exists?at /opt/logstash/lib/logstash/outputs/elasticsearch/protocol.rb:132 template_install atopt /logstash/lib/logstash/outputs/elasticsearch/protocol.rb:21在/ opt/logstash/lib/logstash /注册输出/ elasticsearch.rb:259每个在org/jruby/RubyArray.java:1613输出工作者/opt/logstash/lib/logstash/pipeline.rb:220 start_outputs atopt /logstash/lib/logstash/pipeline.rb:152
这是我的输出配置:
output {
elasticsearch {
host => "X.X.X.X"
port => "9300"
protocol => "http"
cluster => "elasticsearch_david"
}
}
Run Code Online (Sandbox Code Playgroud)
没有连接问题,任何想法?
使用tcpdump进一步调查给出:
GET /_template/logstash HTTP/1.1
User-Agent: Faraday v0.9.0
Accept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3
Accept: */*
Connection: close
Run Code Online (Sandbox Code Playgroud)