私はelasticsearchでTireを実装しました。ローカルで私のプロジェクトは正常に実行され、インデックスの検索に問題はありません。しかし、アプリをサーバーにデプロイすると、次のエラーメッセージが表示されました。
Tire :: Search :: SearchRequestFailed(500:{"error": "SearchPhaseExecutionException [Failed to execute phase [query_fetch]、total failure; shardFailures {[hDTlT_K_Sl6P5regwKNJyg] [articles] [0]:QueryPhaseExecutionException [[articles] [0]: query [ConstantScore(NotDeleted(cache(_type:article)))]、from [0]、size [25]、sort [!]:クエリに失敗しました[メインクエリの実行に失敗しました]];ネスト:IOException[ソートできませんドキュメントごとに複数の値、またはフィールドごとに複数のトークンを持つ文字列タイプの場合];}] "、" status ":500}):
記事の作成中にエラーが発生しなかったため、記事はインデックスに保存されていると思います。また、これを使用して同じクエリを手動で実行しようとしました。
curl -XPOST 'http://localhost:9200/articles/article/_search' -d '{
"sort": [
{
"supplier_code": "desc"
}
]
}'
そして、私は実質的に同じ応答を得ました:
{"エラー": "SearchPhaseExecutionException [フェーズ[query_fetch]の実行に失敗しました、完全に失敗しました; shardFailures {[hDTlT_K_Sl6P5regwKNJyg] [articles] [0]:QueryPhaseExecutionException [[articles] [0]:query [ConstantScore(NotDeleted(cache(_type: article)))]、from [0]、size [10]、sort [!]:クエリに失敗しました[メインクエリの実行に失敗しました]];ネスト:IOException[ドキュメントごとに複数の値を持つ文字列タイプで並べ替えることはできません、またはフィールドごとに複数のトークン];}] "、" status ":500}
それで、誰かが私を正しい方向に向けることができますか?ローカルマシンで使用している正確なsam構成をコピーしました。奇妙なことに、サーバーでは機能しません。
ここで何が欠けていますか?
よろしくお願いします
編集:
実行しようとしている並べ替えが問題の原因であることがわかりました。また、それは私の記事オブジェクトのエラスティック検索へのマッピングと関係があります。
私がソートしようとしているフィールドの何かがnot_analyzedに置かれています私は正しいですか?1つのフィールドのみをマップする場合、すべてのフィールドを明示的にマップする必要がありますか?