当前位置: 首页 > 知识库问答 >
问题:

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

罗宪
2023-03-14

我是python和弹性搜索的新手,我想将一个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 { }
}

但是它没有添加我想要的过滤器。我希望能够在Elasticsearch/Kibana中按_source_id中的项目过滤它。我如何编写正确的. conf?

2) 此文件非常大,使用 logstash 导入需要太长时间。有没有更快的导入方法?

共有1个答案

陈俊誉
2023-03-14

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

filter {
      if [category] == "old category" {
        drop { }
      }
    }

关于性能。这在很大程度上取决于您的硬件。在您的示例中,所有内容都在本地主机上。您正在尝试读取14gb的数据并将其插入同一HDD。您的HDD IO可能是这里的瓶颈。但它可以来自RAM或其他东西。

如果您的系统能够管理它,则可以在 logstash 端添加工作线程或增加批大小。在 elasticseach 端,应首先禁用副本,并在引入第一个数据集时增加index.refresh_interval。

关于html" target="_blank">优化:https://www.elastic.co/guide/en/elasticsearch/reference/master/tune-for-indexing-speed.html

 类似资料:
  • 问题内容: 我是Elasticsearch的新手,到目前为止一直在手动输入数据。例如,我做了这样的事情: 我现在有一个.json文件,我想将其索引到Elasticsearch中。我也尝试过类似的方法,但没有成功: 如何导入.json文件?我需要首先采取一些步骤来确保映射正确吗? 问题答案: 如果要使用带有curl的文件,则正确的命令是这样的: Elasticsearch是无模式的,因此您不一定需要

  • 我是Elasticsearch新手,在此之前一直在手动输入数据。例如,我做过这样的事情: 我现在有一个。json文件,我想将其索引到Elasticsearch中。我也尝试过这样的事情,但没有成功: 如何导入。json文件?我是否需要首先采取步骤来确保映射正确?

  • 问题内容: 我是一名学生,正在进行一些涉及数据挖掘的研究。我有几个自愿的“节点”服务器,这些服务器收集并生成SQL文件供我导入到我的服务器上并进行分析。 问题是,这些文件很大,我需要一种快速导入它们的方法。网络最近扩展了,现在硬盘上没有足够的吞吐量供MySQL控制台将其导入时导入。时间很重要- 进行研究存在最后期限,我想积极主动地收集尽可能多的时间,并且没有等待插入的队列。 我想知道是否有更好的方

  • 问题内容: 我有一个现有的Elasticsearch索引,我想添加一个分析器,但是当我执行此命令时 我得到一个错误 {“错误”:“ IndexAlreadyExistsException [[nuxeo]已经存在]”,“状态”:400} 所以我必须在添加或刷新同义词文件之前删除索引不是很聪明。添加分析器的简单方法是吗?还是至少要刷新它?谢谢 问题答案: 您需要先关闭索引,更新分析器设置,然后再打开

  • 问题内容: 我已经将我的Elasticsearch从v1.9升级到v5,并且我注意到很多事情已经改变。 如果我以v1.9为例:以下代码检查对象类型是否匹配,并过滤其中字段为的项目。 现在,从v1.9升级到v5后,我注意到已更改为和现在。现在,由于不再可用,我无法执行与以前相同的操作。 所以我想知道是否有替代解决方案来检查对象类型。 https://i.stack.imgur.com/dOPex.p

  • 我想知道推荐的方法是什么来过滤掉从存储和索引发送到Elasticsearch的一些字段? 我想过滤我们的一些字段,使其不在Elasticsearch中被索引。您可能会问,为什么从一开始就将它们发送到Elasticsearch。不幸的是,它是通过另一个不接受任何过滤机制的应用程序发送的。因此,应在索引时解决过滤问题。以下是我们所做的,但我不确定这些步骤会产生什么后果: 1-禁用ES模板中的动态映射(