こんにちは、指示をください。/私はelasticsearch 0.17.6とcouchdb 1.1.0を使用しています
私はcouchdbで2つのドキュメントを作成しました: 各ドキュメントには文字列フィールドがあります: name, message. 1 つ目はテキスト ファイル「test.txt」によって添付され、2 つ目は添付されていません。CouchDB によって生成される JSON コードは次のようになります。
{
"_id": "ID1",
"_rev": "6-e1ab4c5c65b98e9a0d91e5c8fc1629bb",
"name": "Document1",
"message": "Evaluate Elastic Search",
"_attachments": {
"test.txt": {
"content_type": "text/plain",
"revpos": 5,
"digest": "md5-REzvAVEZoSV69SLI/vaflQ==",
"length": 86,
"stub": true
}
}
}
{
"_id": "ID2",
"_rev": "2-72142ec18248cedb4dba67305d136aa8",
"name": "Document2",
"message": "test Elastic Search"
}
これら 2 つのドキュメントは、my_test_couch_db というデータベースにあります。
Elasticsearch (ES) を使用して、プラグイン (river および mapper-attachments) を使用してこれらのドキュメントのインデックスを作成しました。与えられたテキストごとに、ES はドキュメントのフィールド内の対応するテキストだけでなく、添付の *.txt ファイルでも見つけることができると思います。しかし、それは不可能です。私は多くの方法を試しました:手動でインデックスを作成したり、(自動および手動で) マッピングしたり、リバーを構成したりしましたが、ES はドキュメントのフィールド内の単語しか見つけることができず、*.txt 添付ファイル内の単語を見つけることができません。サイトhttp://www.elasticsearch.orgの指示に従いますが、どちらも機能しません。
回答ありがとうございます。
これが私のコマンドです:
curl -X PUT "localhost:9200/test_idx_1"
curl -X PUT "localhost:9200/test_idx_1/test_mapping_1/_mapping" -d '{
"test_mapping_1": {
"properties": {
"_attachments": {
"type": "attachment",
"index": "yes"
}
}
}
}'
curl -XPUT 'http://localhost:9200/_river/test_river_1/_meta' -d '{
"type": "couchdb",
"couchdb": {
"host": "localhost",
"port": 5984,
"db": "my_test_couch_db",
"filter": null
},
"index": {
"index": "test_idx_1",
"type": "test_mapping_1"
}
}'
それから、私は検索しようとします
curl -XPOST 'http://localhost:9200/my_test_couch_db/my_test_couch_db/_search'
(2 つのドキュメントは非常によく見つかります)
curl -XPOST 'http://localhost:9200/my_test_couch_db/my_test_couch_db/_search' -d '{
"query": {
"text": {
"_all": "test"
}
}
}'
ここに出力があります
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.081366636,
"hits": [
{
"_index": "my_test_couch_db",
"_type": "my_test_couch_db",
"_id": "ID2",
"_score": 0.081366636,
"_source": {
"message": "test Elastic Search",
"_rev": "2-72142ec18248cedb4dba67305d136aa8",
"_id": "ID2",
"name": "Document2"
}
}
]
}
}
ご覧のとおり、ES はメッセージ フィールドで「test」という単語しか見つけられず、*.text 添付ファイルでこの単語を見つけることができません。
私は他のクエリを試します:
curl -XPOST 'http://localhost:9200/my_test_couch_db/my_test_couch_db/_search' -d '{
"query": {
"text": {
"_attachments": "test"
}
}
}'
{
"took": 0,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}
curl -XPOST 'http://localhost:9200/my_test_couch_db/my_test_couch_db/_search' -d '{
"query": {
"text": {
"_attachments.fields.file": "test"
}
}
}'
{
"took": 0,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}
出力は何もありません。他のマッピングを試してみましたが、うまくいきません。
それはなぜですか、そしてこの問題を解決する方法は?