ES照会練習


私が欲しい条件1)


符号化プロセス:requestで各フィールド値を受信→esに変換するために必要なquery文フォーマット→esでrequestを受信→esで与えられた応答を受信→所望の形式で加工に応答して提供
条件:blue、swashbucklesの両方に含まれるデータで、カテゴリがname goods、カテゴリがname goods、またはtravelのデータを検索します.
"query" => [
            "bool" => [
                   "filter" => [
                        //searchKeywords
                        [
                            "query_string" => [
                                "query" => "(blue) AND (swashbucklers)"
                            ]
                        ],
												[
		                        "bool" => [
		                            "must" => [
		                                    "match" => [
		                                        "cdn_category" => "(MALE_GOODS)"
		                                    ]
		                                ]
		                            ]
												],
                        // other fields
                        [
                            "bool" => [
                                "should" => [
                                    ["match" => [
                                        "cdn_category" => "(MALE_GOODS)"
                                    ]],
                                    ["match" => [
                                        "cdn_category" => "(JOURNEY)"
                                    ]],
                                ]
                            ]
                        ]

                    ]

                ]
            ]
コードがうまく整理されていませんが、たぶんそうするとき、私が欲しい値を得ました.
query stringは、名前の通りクエリーリストであり、条件値にすぎません.
esではboolがfilter,shot,mustなどをバンドルする役割を果たす.
filterとmustはrdbのand条件と同じであり、filterが重み付けスコアをチェックしない点が異なる.そのため、速度を速めることができます.
hallはrdbで述べたor条件と同じである.
matchは最初は用語も使っていたし、普通のquery stringも使っていたので、検索してみるとこの2つよりもmatchが推奨されていることがわかりました.これはquery stringでandやorなど多くの演算子エラーが発生するためです.termについては,形態素解析器で開かれたタグに基づいて動作する.したがって、クエリ文と格納されたタグの形態素は、正しく一致する文を探します.△ここのhttps://brownbears.tistory.com/462部を読んでみると、すぐに理解できます.
リクエスト形式で送信されたデータをこのように取得する必要がある.