Nutch没有使用Mongodb

时间:2016-10-05 23:06:52

标签: mongodb elasticsearch nutch

我正在运行Nutch 2.3.1,Mongodb 3.2.9和Elasticsearch 2.4.1。我已经学习了本教程:

https://qbox.io/blog/scraping-the-web-with-nutch-for-elasticsearch

和本教程:

http://www.aossama.com/search-engine-with-apache-nutch-mongodb-and-elasticsearch/

使用上述3个软件创建网络抓取工具。

一旦我使用来自nutch的index命令,一切都很有效,直到索引...:

# bin/nutch index elasticsearch -all

这种情况发生了:

IndexingJob: starting
Active IndexWriters :
ElasticIndexWriter
        elastic.cluster : elastic prefix cluster
        elastic.host : hostname
        elastic.port : port (default 9300)
        elastic.index : elastic index command
        elastic.max.bulk.docs : ealstic bulk index doc counts. (default 250)
        elastic.max.bulk.size : elastic bulk index length. (default 2500500 ~2.5MB)

IndexingJob: done.

我的nutch-site.xml:

<configuration>
  <property>
    <name>storage.data.store.class</name>
    <value>org.apache.gora.mongodb.store.MongoStore</value>
    <description>Default class for storing data</description>
  </property>
  <property>
    <name>http.agent.name</name>
    <value>AOssama Crawler</value>
  </property>

  <property>
    <name>plugin.includes</name>
    <value>protocol-(http|httpclient)|urlfilter-regex|index-(basic|more)|query-(basic|site|url|lang)|indexer-elastic|nutch-extensionpoints|parse-(text|html|msexcel|msword|mspowerpoint|pdf)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)|parse-(html|tika|metatags)|index-(basic|anchor|more|metadata)</value>
  </property>
  <property>
    <name>elastic.host</name>
    <value>localhost</value>
  </property>

  <property>
    <name>elastic.cluster</name>
    <value>aossama</value>
  </property>

  <property>
    <name>elastic.index</name>
    <value>nutch</value>
  </property>

  <property>
    <name>parser.character.encoding.default</name>
    <value>utf-8</value>
  </property>

  <property>
    <name>http.content.limit</name>
    <value>6553600</value>
  </property>
</configuration>

我还查看了ElasticIndexWriter.java代码,并在第250行附近注意到调用ElasticIndexWriter的类。我现在正在进一步深入研究,但我完全不知道为什么它不能与Mongo合作。我即将放弃并尝试使用Hbase,因为我不喜欢它。

谢谢!

2 个答案:

答案 0 :(得分:0)

经过很多麻烦后我才开始工作。我最终使用ES 1.4.4,nutch 2.3.1,mongodb 3.10和JDK 8.

我所经历的许多问题在许多其他问题上都没有得到解答:

  • (这是一个简单的但是......)确保一切正在运行。使 确定elasticsearch正在使用的正确机器上运行 正确的端口。确保你可以与它交谈。确保MongoDB已启动 并在正确的端口上运行,确保您可以与它通信。
  • 使用正确的索引命令。对于Nutch 3.2.1它是: ./bin/nutch index -all(在您获取并解析之后)。如果遇到solr错误,则nutch-site.xml中没有正确的索引功能。
  • 在您的elasticsearch.yml和您的nutch-site.xml中将您的抓取引擎命名为SAME THING。这是巨大的。这是我在索引函数中抛出任何错误的主要原因。
  • 版本。我尝试使用较新版本的Elasticsearch进行此操作,并经常遇到问题。我将尝试在最新版本的Elasticsearch和Mongo上构建它,并回到此线程。尝试使用我先做的相同构建,然后尝试其他构建。使用nutch的Elasticsearch版本似乎是最重要的部分,因为ivy / ivy.xml设置中的gora依赖关系以及indexer-elastic / plugin.xml设置。

拜托,拜托,如果您遇到任何问题,请告诉我。我花了将近两周的时间来计算这个构建,我知道这可能会令人难以置信地令人沮丧。如果你遇到问题,请告诉我或者发帖,我相信我可以帮助你解决这些问题。

答案 1 :(得分:0)

Nutch支持elasticsearch 2.2.0和mongodb通过分支中的gora插件命名为2.x(对于mongo后端,你应该在$ NUTCH_HOME / ivy / ivy.xml中打开)

<dependency org="org.apache.gora" name="gora-mongodb" rev="0.6.1" conf="*->default" />

除此之外,还有如何在$ NUTCH_HOME / src / plugin / indexer-elastic2 / howto_upgrade_es.txt中升级elasticsearch的信息

  
      
  1. 在$ NUTCH_HOME / src / plugin / indexer-elastic2 / ivy.xml中升级elasticsearch依赖项

  2.   
  3. 升级src / plugin / indexer-elastic2 / plugin.xml中的Elasticsearch特定依赖项   要获取依赖项列表及其版本,请执行:

  4.   
$ ant -f ./build-ivy.xml
$ ls lib | sed 's/^/      <library name="/g' | sed 's/$/"\/>/g'