エロサイトの作り方

2013年11月から勉強しながらエロサイトを作っています。

MongoDB

MEAN Stack飽きてきた

クローラーと管理画面はMongoDB + Express + AngularJS + Node.jsの、いわゆるMEAN Stack構成なのですが、特にNode.jsに飽きたので別の言語にリプレースしようと思ってる。 Node.jsはなんか色々つらい。薄々気づいてたけど、この言語はまず使用目的ありきで…

MongoDBでコレクション単位でバックアップ/リストアする

コレクション単位でのバックアップ --collectionでコレクション名を指定すれば、コレクション単位でバックアップしてくれる。 $ mongodump --db test --collection keywords connected to: 127.0.0.1 Tue Aug 12 12:27:51.343 DATABASE: test to dump/test T…

MongoDBで実行中のクエリーを止める

現在実行中のクエリーの一覧を見る db.currentOp() mongo> db.currentOp() { "inprog" : [ { "opid" : 11680, "active" : true, "secs_running" : 3719, "op" : "query", "ns" : "test.images", "query" : { "count" : "images", "query" : { "downloaded" :…

MongoDBでgeo field only has 1 element

MongoDBではランダムソートをかけることができなくて、地理空間Indexを設定したフィールドから抽出することでランダムっぽくさせる、ということをやるわけですが。 ランダムで取り出す例 データを入れる mongo> for(i=0; i<1000; i++) { mongo> db.sandbox.i…

MongoDBでcannot index parallel arrays

配列を2つ以上含むマルチキーではインデックスを作れないということらしい。 Multikey Indexes — MongoDB Manual 2.6.3

MongoDBで配列の要素ごとに集計する

ダメな例 db.pages.aggregate([ {$group: { _id: '$tags', count: { $sum: 1} }}, {$sort: { count: -1 }} ]); { "result" : [ { "_id" : "巨乳", "count" : 78 }, { "_id" : [ "二次", "パンチラ" ], "count" : 35 }, ... タグが複数入っていると、両方合わ…

エロサイトではどんなタグが人気があるのか?

ちょっと気になったので調べてみました。 オレオレ調べ 自サイト上での調査(二次画像系サイト) 計測期間は2014/01/18〜2014/07/03(計測タグを埋めたのが01/18のため) Google Analyticsのイベントを使って件数を集計 そのため、クローラー等のアクセスは…

再びRiver out of sync with oplog.rs collection

追記:本エラーが何度も出てきて四苦八苦した上での結論としては、 MongoDB River Pluginサイトに記載のバージョン(River Plugin 2.0.0、ElasticSearch 1.0.0、MongoDB 2.4.9)に合わせないと安定動作しないということが分かりました。マイナーバージョン含…

mongorestoreしたらElasticsearchで検索できなくなった件

表題の通りですが、 $ mongorestore --drop ./backup/ とやったら、Elasticsearch側に以下のメッセージが出て検索できなくなってしまいました。 [2014-06-21 21:30:03,291][INFO ][org.elasticsearch.river.mongodb.Indexer] Ignore drop collection request…

Node.jsからElasticsearchに全文検索をかける

過去2回の悪戦苦闘から、ようやくNode.jsを使うところまできました。 elasticsearch-jsを入れる elasticsearch/elasticsearch-js · GitHub Official Elasticsearch client library for Node.js and the browser Elasticsearchのクライアントはやたらあるので…

MongoDB+Elasticsearchで全文検索をする(リトライ)

前回の続き。 kuromojiが動かないのはバージョンの組み合わせの問題? Elasticsearchは最新版(1.2.1)だから、kuromojiも最新版なら動くと思ったのだけど。 elasticsearch/elasticsearch-analysis-kuromoji · GitHub In order to install the plugin, simpl…

MongoDB+Elasticsearchで全文検索をする(失敗)

MongoDBだけだと全文検索にインデックスが効かないので、200万件程度しかないうちの環境でも死んじゃう(実際死ぬ) というわけで、全文検索を使えるようにするためにElasticsearchを入れることにしました。 Elasticsearchを入れる Homebrewから $ brew inst…

Node.jsでSSHポート転送を使ってリモートのMongoDBに接続する方法

たまに手元のコードでサーバーのDBを使いたいことがあるのだけど、そのためにサーバーのポートを開けるのはちょっと…と思うので、SSHのポート転送を使って接続する方法を実装してみました。 といっても、SSHコマンド呼んでいるだけですが。 ソース 'use stri…

MongoDBでsumをする

コレクション内の全ドキュメントの合計を計算する クエリ > db.pageimages.aggregate({ $group: { '_id': '', 'count': { '$sum': '$fileSize' } } }); _idの値は、空文字でいい count['$sum']の値には、集計したいフィールドを指定する フィールド名を指定…