0

このクエリに問題があります。geo_distance フィルターを使用すると、クエリから何も返されません。それを削除すると、適切な結果が得られます。クエリは次のとおりです。

GET _search
{
 "query": {
  "bool": {
     "filter": {
       "geo_distance": {
          "distance": 20,
          "distance_unit": "km",
          "coordinates": [48.8488576, 2.3354223]
       }  
     },
     "must": {
        "term": {
           "_type": {
              "value": "staff"
           }
        }
     },
     "must_not": [
        {
           "term": {
              "cabinet.zipcode": {
                 "value": "75006"
              }
           }
        },
        {
           "term": {
              "next_availability_in_days": {
                 "value": "-1"
              }
           }
        }
    ]
  }
 }
}

誰かが私にヒントをくれれば幸いです。

更新 同じクエリ ロジックで Elasticsearch Ruby DSL を実行すると、適切な結果が得られます。

<Elasticsearch::Model::Searching::SearchRequest:0x007ff335763560
@definition=
{:index=>["development_app_scoped_index_20170428134744", 
"development_app_scoped_index_20170428134744"], :type=>["staff", "light_staff"],
  :body=>
    {:query=>
     {:bool=>
      {:must_not=>[
        {:term=>{"cabinet.zipcode"=>75006}},
        {:term=> {:next_availability_in_days=>-1}}
      ],
      :must=>[
        {:term=>{:_type=>"staff"}}
      ],
      :filter=>{:geo_distance=>
        {:coordinates=>
          {:lat=>48.8488576, :lon=>2.3354223}, 
          :distance=>"6km"
        }
      }}},
  :sort=>[
    {:type=>{:order=>"desc"}},
    {"_geo_distance"=>{"coordinates"=>"48.8488576,2.3354223", "order"=>"asc", 
  "unit"=>"km"}},
    {:next_availability_in_days=>{:order=>"asc"}},
    {:priority=>{:order=>"asc"}}
  ]

}}

したがって、これは非常に奇妙で、ES 構文で何が問題になっているのかわかりませんが、間違いなく期待どおりに動作するはずです。ありがとう。

4

1 に答える 1