2015-11-05 4 views
0

Я пытаюсь получить список записей, пересекающих круг.elasticsearch geo_shape запрос return no results

отображений: У меня есть geo_point и geo_shape, но я имею в виду на geo_shape исключительно

{ 
    "mappings": { 
     "poi": { 
     "properties": { 
      "id": { 
       "type": "string", 
       "index": "not_analyzed" 
      }, 
      "type": { 
       "type": "string", 
       "index": "not_analyzed" 
      }, 
      "name": { 
       "type": "string", 
       "analyzer": "whitespace" 
      }, 
      "pin": { 
       "type": "geo_point" 
      }, 
      "geometry": { 
       "type": "geo_shape", 
       "tree": "quadtree", 
       "precision": "1m" 
      }, 
      "extras": { 
       "type": "object" 
      } 
     } 
     } 
    } 
} 

запись (первый из списка, не обязательно Matching)

{ 
    "id": 416824728, 
    "pin": [ 
     11.2418666, 
     46.4718564 
    ], 
    "geometry": { 
     "type": "Point", 
     "coordinates": [ 
     11.2418666, 
     46.4718564 
     ] 
    }, 
    "extras": { 
     "capacity": "5", 
     "amenity": "parking", 
     "fee": "no" 
    }, 
    "name": "", 
    "type": "poi" 
} 

, то запрос :

{ 
    "query": { 
     "filtered": { 
     "query": { 
      "match_all": {} 
     }, 
     "filter": { 
      "geo_shape": { 
       "geometry": { 
        "shape": { 
        "type": "circle", 
        "radius": "100km", 
        "coordinates": [ 
         11, 
         46 
        ] 
        } 
       } 
      } 
     } 
     } 
    } 
} 

Любое предложение?

Благодаря

+0

Я создал индекс/сопоставление и добавил образец документа, который вы поделили, и ваш поисковый запрос полностью возвращает этот документ. Можете ли вы рассказать, как вы выполняете запрос (какой клиент, какой метод HTTP, какой URL-адрес, ...)? – Val

+0

Да, у меня были те же самые результаты, которые я пытаюсь сделать сам. См. Мой ответ (На самом деле, у меня есть перекресток, размещенный здесь https://discuss.elastic.co/t/geo-shape-query-return-empty-set/ 33860) Спасибо – lcapra

ответ

0

Я использовал Node.js объемную реализацию апи параллельно и записи, где не найден.

Используя обещания, я использовал массивный api в серии, но только точечные типы, в которых затем можно найти.

После переключения на вставку записей один за другим все записи (содержащие Polygon и LineString), где правильно проиндексированы (?) И, следовательно, доступны для поиска.