LoginSignup
1
1

More than 3 years have passed since last update.

FessでSalesforceを高速に横断検索する

Last updated at Posted at 2020-03-27

この記事では,全文検索サーバー Fessを利用してSalesforce内のオブジェクトを横断検索する方法を紹介します.

これはFess上で実際に検索を行っている画面のスクリーンショットです.

導入手順

FessでSalesforceを横断検索するための手順を説明します.

導入の流れは次のようになります.

  1. Fessの起動
  2. プラグイン追加
  3. 認証設定
  4. Fessの設定・クローラ実行

1. Fessの起動

起動および停止方法」を参考にFessを起動します.

2. プラグイン追加

プラグイン」を参考にfess-ds-salesforce-xx.x.xをインストールします。

3. 認証設定

データを取得するためには,認証情報をパラメータとして与える必要があります.

3-1. 証明書準備

「証明書」と「秘密鍵」を準備する必要があります.

ここでは,Salesforceの自己署名証明書を用いる方法を紹介します.

自己署名証明書の生成」を参考に,証明書を作成します.この時,指定した表示ラベル(エイリアス)を以降fessとします.
「キーストアにエクスポート」を行います.この時,ダウンロードしたファイル名を以降fess.jksとします.

キーストアから証明書(fess.crt)を取り出します.

keytool -exportcert -keystore fess.jks -alias fess -file fess.crt

キーストアから秘密鍵(key.pem)を取り出します.

keytool -importkeystore \
    -srckeystore fess.jks \
    -srcstorepass "" \
    -destkeystore fess.p12 \
    -deststoretype PKCS12 \
    -srcalias fess \
    -deststorepass changeit \
    -destkeypass changeit
openssl pkcs12 -password pass:changeit -in store.p12 -nodes -nocerts | sed -ne '/-BEGIN PRIVATE KEY-/,/-END PRIVATE KEY-/p' > key.pem

実際にパラメータとして与える時は改行が不要なため,以下で出力される文字列を利用します.

cat key.pem | tr -d '\n'

3-2. アプリケーション作成

接続アプリケーションの作成」を参考にアプリケーションを作成します.

その際,必須情報に加え,
「OAuth設定の有効化」のチェックを入れ,
「コールバックURL」にhttps://login.salesforce.com/services/oauth2/successを入力し,
「デジタル署名を使用」のチェックを入れて,先程の証明書ファイルを選択し,
「選択したOAuth範囲」でapi openid offline_accessを追加します.

アプリケーションを作成したら,コンシューマ鍵(client_id)を取得して,
https://login.salesforce.com/services/oauth2/authorize?response_type=token&client_id=${client_id}&redirect_uri=https://login.salesforce.com/services/oauth2/success
からアプリケーションに許可を与えます.

4. Fessの設定・クローラ実行

Salesforceをクロールするための設定をします.
データストアクロール」も参考にしてください.

4-1. クローラの設定

Fessの管理画面を開き,クローラ > データストアと移動し,新規作成をします.
新規作成画面では,

  • 名前
  • ハンドラ
  • パラメータ

の4項目を設定して,作成を完了します.

「名前」には好きな文字列を入力してください.
「ハンドラ」はSalesforceを選択してください.
「パラメータ」は次のようなフォーマットで入力してください.

base_url=https://login.salesforce.com
auth_type=oauth
username=admin@example.com
client_id=3MVG9I1kFE5Iul2DewTbNB1_YcSY0ptj5SCZIhdYPfIsVczSBZWGZRYSUs8tRyRgDRucoa8IK_bEnAwRzgbSZ
private_key=MIIEvQ...
custom=FessObj,...
FessObj.title=name
FessObj.contents=name,body

キーと値の説明は次のようになります.

キー
base_url SalesforceサーバーのURL(https://test.salesforce.com等)
username ユーザー名
auth_type oauthまたはpassword(passwordの場合,password client_secretが必要)
client_id 3-2で取得したコンシューマ鍵
private_key 3-1で作成した秘密鍵
custom カスタムオブジェクト名(,区切り)
${オブジェクト名}.title 検索結果でタイトルに該当する項目名
${オブジェクト名}.contents ドキュメントのコンテンツ(インデックス対象文字列)に該当する項目名(,区切り)

4-2. ジョブスケジューラの作成

4-1で作成したクロールをクリックすると,クロール設定が開き,そこから「新しいジョブの作成」をします.

後からでも変更はできるので、とりあえず試す場合はそのままの設定で大丈夫です。
詳しい設定については,「スケジューラ」を参考にしてください.

4-3. クローラの実行

システム > スケジューラと移動し,4-2で作成したジョブを開きます.
その画面から,「今すぐ開始」をします.

状態が「実行中」から「有効」になるまで待ちます.

4-4. 検索のテスト

検索フォームから適当に検索してみます.

これでFessでSalesforceを横断検索することが出来るようになりました.

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1