json - 将大型JSON文件编入索引/导入到Elasticsearch(> 10GB)中并添加过滤器

标签 json elasticsearch logstash kibana

我是python和Elastic Search的新手,我想将14GB JSON文件导入Elasticsearch,如下所示:

{
  "_score": 1.0,
  "_index": "newsvit",
  "_source": {
    "content": "   \u0628\u0647 \u06af\u0632\u0627\u0631\u0634 \u0627\u06cc\u0631\u0646\u0627\u060c \u062a\u06cc\u0645 \u0647\u0627\u06cc \u062a\u0631\u0627\u06a9\u062a\u0648\u0631\u0633\u0627\u0632\u06cc ",
    "title": "\u0641\u06cc\u0646\u0627\u0644 \u062c\u0627\u0645 \u062d\u0630\u0641\u06cc\u061b \u0648\u062f\u0627\u0639 \u0627\u0644\u0628\u0631\u0632 \u062d\u0627\u062c\u06cc \u067e\u0648\u063",

    "lead": "\u062a\u0647\u0631\u0627\u0646 - \u0627\u06cc\u0631\u0646\u0627 - \u062f\u06cc\u062f\u0627\u0631 \u067e\u0627\u06cc\u0627\u0646\u06cc \u062c\u0627\u0645 f.",
    "agency": "36",
    "date_created": 1494521741,
    "url": "http://www.irna.ir/fa/News/82525960/",
    "image": "uploads/2017/05/11/2561366787.jpg",
    "category": "5"
  },
  "_type": "news",
  "_id": "2981938"
}
我想使用logstash导入此文件,但是现在有两个问题:
1)
我写了这个.conf文件来导入它:
input {
    file {
        start_position => "beginning"
        path => "E:/git/consemsearch/ferdowsi-data.json"
        sincedb_path => "NULL"
    }
}
filter {
   json {
       source => "message"
   }
}
output {
    elasticsearch {
         hosts => "http://localhost:9200"
        index => "news_data"
    }
    stdout { }
}
但它没有添加我想要的过滤器。我希望能够通过_source_id中的项目在Elasticsearch / Kibana中对其进行过滤。如何编写正确的.conf?
2)
该文件非常大,导入logstash所需的时间太长。有更快的导入方法吗?

最佳答案

要从输入到输出“过滤”数据,可以使用“drop”过滤器:

filter {
      if [category] == "old category" {
        drop { }
      }
    }
关于性能。
这将在很大程度上取决于您的硬件。
在您的示例中,所有内容都在您的本地主机上。您正在尝试读取14gb的数据并将其插入同一HDD中。
您的HDD IO可能是这里的瓶颈。但是它可能来自RAM或其他东西。
如果系统能够管理它,则可以在logstash端添加工作程序或增加批处理大小。
在elasticseach端,您应该首先禁用副本并在摄取第一个数据集时增加index.refresh_interval。
关于优化:
https://www.elastic.co/guide/en/elasticsearch/reference/master/tune-for-indexing-speed.html

关于json - 将大型JSON文件编入索引/导入到Elasticsearch(> 10GB)中并添加过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63874229/

相关文章:

php 数组转换成 javascript 数组 document.write javascript_array

javascript - 替换 JSON 中的嵌套字符串

java - 可以使用复合键制作 spring-data-elasticsearch @Document 吗?

elasticsearch - Logstash拆分根消息

python - 从 Kibana 获取 elasticsearch 查询

elasticsearch - 想要从Elasticsearch中的当前数据中提取天数和日期时间

java - 在android中解析json数组

javascript - sql 到 leaflet js 动画标记

elasticsearch - 在 Elasticsearch 中存储数据 - OLTP

elasticsearch - 在Elasticsearch中基于日志设计警报系统