まず、貧しい私の英語のために申し訳ありませんが、私の問題を説明しようとしましょう。文字列Java APIのクエリでは、名前でドキュメントを見つけることができません。
私は、管理されたドキュメントにelasticsearch java apiを使用しているアプリケーションで作業しています。 すべてがうまく動作し、DBで検索してインデックスに保存することができます。フィールドで集計されたドキュメントやクールなものを数えることができますが、私は奇妙な問題に固執しました。
名前のフィールドで文書を検索しようとすると、文書の一部が検索で返されません。
私は例をあげてみましょう:
私の文書は(単なるたとえば)次のようになります:
ID:1 名:ブック タイプ:PDF
ID:2 名:私の検索サービスのテスト タイプ:zip
私が検索しようとすると、私は名前で検索した場合、パラメータとして "book"という値を送信しますが、それはうまく動作しますが、 gを検索し、パラメータ値 "service"を送信すると、結果は空になります。
ここに私の検索コード:
SearchRequestBuilder src1 = client.prepareSearch().setQuery(QueryBuilders.queryStringQuery(parameter).field("name"));
誰もが知っている、なぜIDが2の文書の名前フィールドに「サービス」を、私のパラメータの値を見つけることができません。この検索?
ありがとうございます!
追加情報:
私の一般的なインデックス情報:
{
"template": "*",
"settings": {
"index.refresh_interval": "5s"
},
"mappings": {
"_default_": {
"_all": {
"enabled": true
},
"dynamic_templates": [
{
"string_fields": {
"match": "*",
"match_mapping_type": "string",
"mapping": {
"index": "not_analyzed",
"omit_norms": true,
"type": "string"
}
}
}
],
"properties": {
"@version": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
}
マッピング情報を追加できますか?あなたの情報をどのように索引付けしていますか? via elasticsearch-plugin? –
こんにちは@VladislavKysliy、行方不明の情報には申し訳ありません。 私はelasticsearch java apiを使用して情報をインデックスに登録していますので、私のアプリケーションで自動的にインデックスが作成され、インデックスが作成されます。 すべての文字列フィールドを分析しないように設定する(インデックスステップで文字列値を分割しないように)、この設定にはマッピングセクションが存在します: –
"dynamic_templates":[ { "string_fields" :{ "マッチ": "*"、 "match_mapping_type": "string" は、 "マッピング":{ "インデックス": "not_analyzed"、 "omit_norms":真、 "タイプ": "文字列" } } } ] –