0

コンテンツを検索できるように、Elasticsearch で .txt ファイルのインデックスを作成しようとしています。私はある程度の進歩を遂げましたが、検索部分には運がありません。

ここに私のマッピングがあります:

mappings: {
    file: {
        properties: {
            allow_token_share: {
                type: string
            },
            file: {
                type: string
            },
            deny_token_document: {
                type: string
            },
            _name: {
                type: string
            },
            _content_type: {
                type: string
            },
            type: {
                type: string
            },
            uri: {
                type: string
            },
            deny_token_share: {
                type: string
            },
            allow_token_document: {
                type: string
            }
        }
    }
}   

インデックスを作成したドキュメントは次のとおりです。

{
    _index: f_drive,
    _type: file,
    _id: file:/C:/Users/ttobinca.EPIC/Documents/Dev/Epicsearch/TestDocs/Test.txt,
    _version: 1,
    _score: 1,
    _source: {
        uri: C:\Users\ttobinca.EPIC\Documents\Dev\Epicsearch\TestDocs\Test.txt,
        allow_token_document: __nosecurity__,
        deny_token_document: __nosecurity__,
        allow_token_share: __nosecurity__,
        deny_token_share: __nosecurity__,
        type: attachment,
        _content_type: text/plain,
        _name: Test.txt,
        file: SSBsaWtlIGhhbWJ1cmdlcnMgYW5kIGhvdGRvZ3MsIGJ1dCBtb3N0bHkgY2hvY29sYXRlLg0KDQpIZWxsbyB3b3JsZC4=
    }
}

ファイルの内容は次のとおりです。

ハンバーガーとホットドッグが好きですが、主にチョコレートです。

こんにちは世界。

最初の質問は、この文書が正しく索引付けされているかどうかです。もしそうなら、このドキュメントのコンテンツを検索するにはどうすればよいですか? このクエリを実行しても結果は返されません:

{
  "query": {
    "query_string": {
      "query": "hamburgers"
    }
  }
}

しかし、これはドキュメントを返します。

{
  "query": {
    "query_string": {
      "query": "SSBsaWtlIGhhbWJ1cmdlcnMgYW5kIGhvdGRvZ3MsIGJ1dCBtb3N0bHkgY2hvY29sYXRlLg0KDQpIZWxsbyB3b3JsZC4="
    }
  }
}
4

2 に答える 2

5

バイナリ コンテンツのインデックス作成は、既定ではサポートされていません。mapper-attachment pluginをインストールして使用する必要があります。attachmentこれにより、マッピングで使用できるカスタム タイプが有効になります。そうすれば、elasticsearch は apache tika を使用してバイナリからテキストを抽出し、テキストとしてインデックス付けします。その後、テキスト クエリで結果を取得できます。

アタッチメント プラグインを使用して、elasticsearch ノード内のサーバー側でバイナリ コンテンツの解析を実行していることを考慮してください。これは、そのノードで電力とメモリを予約する必要があるため、おそらく良い考えではありません。テキストのインデックス作成と検索に使用する代わりに処理します。

于 2013-05-24T19:29:36.730 に答える