0

私はelasticsearch 1.7から5.0にアップグレード中です。変更の 1 つは、bool クエリを優先してフィルター処理されたクエリを削除することです。たとえば、古いバージョンの ES で使用されているこの検索ハッシュがあります。

{
 "sort": [ { "updated_at" => "desc" } ],
 "query": {
          "filtered": {
                      "filter": {
                                "bool": {
                                    "must": [
                                                { "term": { "account_id" => 2 } },
                                                { "bool": {
                                                            "should": [
                                                                        { "missing": { "field": "workgroup_ids" } },
                                                                        { "term": { "visibility": 2 } }
                                                                      ]
                                                          }
                                                }
                                            ],
                                            "must_not": [
                                                          { "range": { "expires_at": { "lte": "2016-11-17T16:27:22Z" } } },
                                                          { "range": { "published_at": { "gte": "2016-11-17T16:27:22Z" } } }
                                                        ]
                                        }
                                },
                      "query": {
                                "bool": {
                                          "must": [
                                                    { "query_string": { "query": "name:(*orang.jpg*)" } }
                                                  ]
                                        }
                              }
                      }
          }}

したがって、これは次の形式にする必要があることはわかっています。

{ "query": "bool": [{ term: { account_id: 2 } }]} 

また、不足しているクエリを 5 の must_not exists クエリに置き換える必要があることも知っています。そうは言っても、この大量にネストされたハッシュを変換する方法がわかりません。

また、elasticsearch-rails gem fyi を利用して、Rails で ES を使用/アクセスしています。

4

1 に答える 1