2016-09-26 10 views
2

Nutchとelasticsearchをクロール目的で使用しているときに重大な問題に直面しています。Nutch Crawledドキュメントのelasticsearchマッピングの問題点

私たちのアプリケーションには2つのデータストレージエンジンがあります。

  1. のMySQL

  2. Elasticsearch

は、私は、MySQLのDBのURLのテーブルに格納されている10件のURLを持っているとしましょう。今では、実行時にこれらのURLをテーブルから取得し、これらをシードに書き込んで、クロールのためにtxtにしたいと考えています。私はこれらすべてのURLを必要に応じて書いています。今では私のクロールが始まり、インデックス内のelasticsearch内でこれらのドキュメントにインデックスを付けます(urlインデックスと言うことができます)。しかし、elasticsearchインデックス内に参照を保持して、elasticsearchインデックスにはクロールされたデータのみが含まれているため、分析目的で特定のURLのクロールされた詳細を取得できます。例えば、

MySQLでの私のテーブルの構造は次のとおりです。

表URL:私はしたい

ID URL


1 www.google.com

Elasticsearchインデックスマッピングは次のとおりです。

インデックスのURL:

{ _id: "www.google.com"、 タイプ: "DOC"、 内容: "Hello World" の url_id:1、 。 。 。 }

ここで、url_idは、urlsテーブル内のクロールされたURLのidカラムのフィールド値です。

URLごとに別々のインデックスを作成できますが、そのソリューションは理想的ではありません。なぜなら、終わりには複数のインデックスがあるからです。どのようにクロール後にこれを達成するか。弾性検索インデクサーを変更する必要がありますか?私はnutch 1.12とelastichsearch 1.7.1を使用しています。どんな助けでも大歓迎です。

答えて

3

シードリストに追加のメタデータとしてurl_idを渡し、urlmetaとindex-metadataプラグインを使用して、キー/値がアウトリンクに(必要に応じて)渡されるか、少なくともインデックスに使用できるようにする必要があります。

メタタグのインデックス方法については、Nutch WIKIを参照してください。

+0

ありがとうございました。私はurl_idをurlと一緒に渡し、urlmetaプラグインを使用しました。このインデックスはインデックス作成後にelasticsearchにurl_idフィールドを作成します。これで、mysqlテーブルのurlテーブルをelasticsearchインデックスにマップできます。これは私の多くの時間を節約しました。 – user2354150

+0

@ user2354150あなたは依然として上記の私の答えを受け入れたとマークしていません。おそらく新しい質問を開くのに最適でしょう。他の人がそれを見つけやすくなるでしょう –

+0

答えが受け入れられ、最良の結果を得ました – user2354150