2017-09-20 6 views
0

Ich versuche, zwei Punkte in derselben Abfrage wie unten zu suchen. Ergebnisse werden jedoch leer zurückgegeben.Elastische Suche kombinieren bool/filter Abfrage

"query": { 
      "bool": { 
       "must": { 
        "match_all": {} 
       }, 
       "filter": [{ 
        "geo_shape": { 
         "border": { 
          "shape": { 
           "type": "point", 
           "coordinates": [longitude1, latitude1] 
          }, 
          "relation": "intersects" 
         } 
        } 
       }, { 
        "geo_shape": { 
         "border": { 
          "shape": { 
           "type": "point", 
           "coordinates": [longitude2, latitude2] 
          }, 
          "relation": "intersects" 
         } 
        } 
       } 
       ] 
      } 

     } 

Die Abfrage funktioniert nur für jeweils einen Punkt.

Wie kann ich zwei Punkte gleichzeitig suchen?

+0

Ich habe auch versucht, zwei Bool-Abfragen innerhalb des Abfrageblock. Das auch leer –

+0

Müssen beide Punkte übereinstimmen oder nur einer von ihnen? – Val

+0

Ergebnisse sollten ODER sein. Wenn ein Punkt auf einem Polygon und ein anderer auf einem anderen Polygon liegt, sollte die Abfrage beide Polygon-IDs zurückgeben. Wenn es im selben Polygon ist, kann die Abfrage zwei Ergebnisse mit derselben ID oder eins zurückgeben. –

Antwort

1

Wenn Sie oder Verhalten benötigen, um yo Uneed bool/should statt:

"query": { 
     "bool": { 
      "should": [{    <--- change this 
       "geo_shape": { 
        "border": { 
         "shape": { 
          "type": "point", 
          "coordinates": [longitude1, latitude1] 
         }, 
         "relation": "intersects" 
        } 
       } 
      }, { 
       "geo_shape": { 
        "border": { 
         "shape": { 
          "type": "point", 
          "coordinates": [longitude2, latitude2] 
         }, 
         "relation": "intersects" 
        } 
       } 
      } 
      ] 
     } 

    } 
+0

Danke. ....... –

+0

Cool, froh, dass es geholfen hat! – Val

Verwandte Themen