私はElasticSearch設定を持っていて、CouchDBリバーを介してインデックスを付けるデータを受け取りました。私は、CouchDB文書のほとんどのフィールドが実際には検索に関係しないという問題があります。アプリケーションで内部的に使用されるフィールド(IDなど)であり、これらのフィールドのために誤検出したくないという問題があります。さらに、必要なデータを索引付けすることは、私にはリソースの無駄に思えます。ElasticSearch:マッピングで指定されたフィールドのみをインデックス化します
この問題を解決するために、インデックスを作成するフィールドを指定するマッピングを定義しました。私はpyesを使用してElasticSearchにアクセスしています。私が従うプロセスは次のとおりです。
- インデックスに関連付けられたCouchDBリバーを作成します。これは明らかにインデックスも作成し、そのインデックスに「couchdb」マッピングを作成します。このマッピングでは、すべてのフィールドと動的に割り当てられたタイプが表示されます。
- 実際にインデックスを作成したいフィールドにマップを入れてください。
によって得られた。これは、インデックス定義である:
curl -XGET http://localhost:9200/notes_index/_mapping?pretty=true
{
"notes_index" : {
"default_mapping" : {
"properties" : {
"note_text" : {
"type" : "string"
}
}
},
"couchdb" : {
"properties" : {
"_rev" : {
"type" : "string"
},
"created_at_date" : {
"format" : "dateOptionalTime",
"type" : "date"
},
"note_text" : {
"type" : "string"
},
"organization_id" : {
"type" : "long"
},
"user_id" : {
"type" : "long"
},
"created_at_time" : {
"type" : "long"
}
}
}
}
}
私が持っている問題は何倍である:
- デフォルトの「CouchDBの」マッピングはすべてのフィールドをインデックス化していること。これいらない。そのマッピングの作成を避けることは可能ですか?私は混乱しています。なぜなら、そのマッピングは何とかCouchDBの川に「接続」しているようだからです。
- 私が作成したマッピングは、任意の効果を持っていないようです。そのマッピング
でインデックス化なしの文書はありませんあなたはこの上の任意のアドバイスはありますか?インデックス1で
server="localhost"
# Create the index
curl -XPUT "$server:9200/index1"
# Create the mapping
curl -XPUT "$server:9200/index1/mapping1/_mapping" -d '
{
"type1" : {
"properties" : {
"note_text" : {"type" : "string", "store" : "no"}
}
}
}
'
# Configure the river
curl -XPUT "$server:9200/_river/river1/_meta" -d '{
"type" : "couchdb",
"couchdb" : {
"host" : "localhost",
"port" : 5984,
"user" : "admin",
"password" : "admin",
"db" : "notes"
},
"index" : {
"index" : "index1",
"type" : "type1"
}
}'
文書はまだそのI だけ一つである、「note_text」以外の分野が含まれています。これは私が実際に入力したとおりに、やっているものです
EDIT
マッピング定義で特に言及しています。何故ですか?
ご意見ありがとうございますが、何かが不明です。そのPUTリクエストで私のマッピング(私は 'default_mapping'と呼んでいました)をどこで利用しますか? – dangonfast
インデックスごとに1つのマッピングがありますが、各マッピングで宣言された複数の 'タイプ'を持つことができます。あなたが使用しようとしているマッピング・タイプがわからなかったのです。それらのうちの2つ、つまりcouchdbとdefault_mappingがあります。川の設定で 'type'キーの値を変更するだけです。 –
元の質問を編集して、ESを設定するための実際のPOSTリクエストを表示しました。これはまだ動作していません。すべてのフィールドはまだ索引付けされています。 – dangonfast