2016-11-14 608 views
1

我嘗試確定多邊形(在文檔中索引)是否與另一個形狀(如圓形)具有公共點。Elasticsearch GeoShape查詢中的CONTAINS和WITHIN有什麼區別?

的Elasticsearch documentation提供4種類型的關係:

  • INTERSECT;
  • DISJOINCT;
  • CONTAINS;
  • WITHIN。

我試圖找到更多的信息,特別是從GeoJSON方面沒有成功。

我認爲第一種類型可以回答我的問題,但我找不到兩個最後的區別。文檔非常短。

謝謝。

+0

錯別字:它實際上是「交叉」和「DISJOINT」。並且不區分大小寫。 – mgaert

+0

我如何在查詢中使用它們? –

回答

1

WITHIN將返回其geo_shape是內在查詢中指定的幾何形狀的所有文件。

=>在這種情況下,你會在你的查詢中指定的幾何形狀A和ES將返回其geo_shapeB完全一家位於那個形狀A所有文件:A contains B

CONTAINS將返回所有文件其geo_shape字段包含查詢中指定的幾何形狀。

=>在這種情況下,ES將返回其geo_shapeBCONTAINS在查詢中指定的幾何形狀A所有文件:B contains A

+0

我不明白語法上的差異。對我而言,這兩者都意味着什麼,英語不是我的主要語言。 – GRoguelon

+2

區別在於'WITHIN'的意思是'A包含B','CONTAINS'意味着'B包含A',其中'A'是查詢中的形狀,'B'是文檔中的形狀。 – Val

+0

我也可以用法語解釋;) – Val

相關問題