2015-05-01 4 views
0

У меня есть модель данных, относящаяся к модели категории. Таким образом, эта модель данных ассоциируется с столбцом category_id. Мой запрос обрабатывается ES, но он не возвращает никаких результатов.Ассоциации запросов Elasticsearch, не возвращая результатов

Я сфотографировал запись, взял ее category_id и передал в category_id запрос ниже. Я ожидал хотя бы одного результата, потому что он тот же category_id. Тем не менее, я получаю 0 результатов.

{ 
    query: { 
    filtered: { 
     query: { 
     bool: {must: []}, 
     }, 
     filter: { 
     bool: { 
      must: { 
      term: {category_id: #CATEGORY_ID PASSED IN HERE} 
      } 
     } 
     } 
    } 
    }, 
    sort: [{ 
    _geo_distance: { 
     store_location: {:lat=>0, :lon=>0}, 
     order: "asc", 
     unit: "miles" 
    } 
    }] 
} 

Это мое текущее сопоставление. Здесь есть свойства, которые могут быть неактуальными, потому что это из большого проекта.

"test-somethings": { 
    "mappings": { 
    "something": { 
     "dynamic": "false", 
     "properties": { 
     "bpid": { 
      "type": "string" 
     }, 
     "category_id": { 
      "type": "integer" 
     }, 
     "id": { 
      "type": "integer" 
     }, 
     "listings": { 
      "type": "nested", 
      "include_in_parent": true, 
      "properties": { 
      "store_id": { 
       "type": "string" 
      } 
      } 
     }, 
     "name": { 
      "type": "string" 
     }, 
     "store_id": { 
      "type": "integer" 
     }, 
     "store_location": { 
      "type": "geo_point" 
     } 
     } 
    } 
    } 
} 

Некоторые данные я тестирую с:

[{ 
    "id":1, 
    "bpid":"84202e8fc0", 
    "name":"Something", 
    "description":"Labore et odit quas sit similique. Molestiae deserunt rem harum assumenda voluptate placeat est. Reiciendis iusto ea et. Nesciunt qui et ab porro vitae ut. Exercitationem et dolores ullam.", 
    "created_at":"2015-05-01T21:02:23.000Z", 
    "updated_at":"2015-05-01T21:02:23.000Z", 
    "category_id":1282 
}, 
    "id":2, 
    "bpid":"9719093ac5", 
    "name":"Test Something", 
    "description":"Dolores minima fugit sunt. Consequuntur aspernatur dolorem. Quasi dolorem natus occaecati eos culpa error. Voluptates dolores pariatur ab impedit minima cumque molestiae.", 
    "created_at":"2015-05-01T21:02:23.000Z", 
    "updated_at":"2015-05-01T21:02:23.000Z", 
    "category_id":1283 
}, 
    "id":3, 
    "bpid":"5026503fc5", 
    "name":"Pot", 
    "description":"Et facilis et voluptatem amet. Quidem qui molestiae quia voluptas voluptatum. Facilis aut illo dicta provident animi omnis. Et quia dicta omnis aliquam quas sequi. Nemo sed officia consequatur excepturi.", 
    "created_at":"2015-05-01T21:02:23.000Z", 
    "updated_at":"2015-05-01T21:02:23.000Z", 
    "category_id":1284 
}] 

ответ

0

Попробуйте это:

{ 
    query: { 
    filtered: { 
     query: { 
     match_all: {}, 
     }, 
     filter: { 
     bool: { 
      must: { 
      term: {category_id: #CATEGORY_ID PASSED IN HERE} 
      } 
     } 
     } 
    } 
    }, 
    sort: [{ 
    _geo_distance: { 
     store_location: {:lat=>0, :lon=>0}, 
     order: "asc", 
     unit: "miles" 
    } 
    }] 
} 

Вот код, который я использовал, чтобы проверить его:

http://sense.qbox.io/gist/e538630b18e499a1bc566896413627b540aae745

+0

Это еще 0 результатов. Каковы были причины этого? Все, что я вижу, это запрос содержит 'match_all' вместо' bool' и 'must'. В конце концов, эта часть все равно пуста. –

+0

Да, я думал, что синтаксис ошибочен, но, видимо, нет. Я предполагаю, что все в порядке, если у вас есть пустой запрос bool, хотя он явно избыточен. Оказывается, ES рассматривает пустой «must» как «match_all» (https://github.com/elastic/elasticsearch/issues/7240). Итак, вы правы, это не проблема. Но вы не публиковали данные о карте или какие-либо данные, поэтому трудно сказать, какова ваша фактическая проблема. Оба вопроса работают для меня. –

+0

Я добавил отображение и некоторые данные, которые я тестирую в вопросе. –