2

こんにちは、指示をください。/私は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": []
  }
}

出力は何もありません。他のマッピングを試してみましたが、うまくいきません。

それはなぜですか、そしてこの問題を解決する方法は?

4

1 に答える 1