2013-09-04 1 views
0

Я пытаюсь реализовать поисковую систему с ElasticSearch. Моя проблема заключается в расположении объектов Во-первых, искавшие объекты могут иметь различный тип места:Запрос эластичный поиск с множеством уровней «bool query»

  • Страна
  • Страна + Состояние
  • Страна + ГСО + Район

Вот пример:

Country = A 
State = B 
District = C 

Currently I get all the objects that have the location : 
Country = A and State = B and District = C 

I want also find objects which have the location: 
only Country = A 
and 
only Country = A and State = B 

Это немного сложно объяснить, но принцип ле.

Так что я создал следующий ElasticSearch запрос:

"query" : { 
     [{"bool":{ 
      "should":[ 
       {"bool":{ 
        "must":[ 
         {"match":{"country":"-223"}}, 
         {"match":{"state":"-3760"}}, 
         {"match":{"district":"-8245"}} 
        ] 
       }}, 
       {"bool":{ 
        "must":[ 
         {"match":{"country":"-223"}}, 
         {"match":{"state":"-3760"}}, 
         {"match":{"district":""}} 
         ] 
       }}, 
       {"bool":{ 
        "must":[ 
         {"match":{"country":"-223"}}, 
         {"match":{"state":""}}, 
         {"match":{"district":""}} 
         ] 
       }} 
      ] 
     }}] 
    } 

Но это не работает, я не знаю, что я сделал неправильно. Я прочитал документацию на этом сайте:

http://www.elasticsearch.org/guide/reference/query-dsl/bool-query/

И я стараюсь все, что казалось полезным для моей проблемы, но без успеха ли кто-то может помочь мне найти то, что случилось?

Спасибо F.

ответ

1

Я делаю это путем индексации битого бит данных по-разному.

Для каждого индекса I документ несколько значений в поле адреса для каждого документа, а именно:

country 
country/state 
country/state/district 

Таким образом, если я хочу, чтобы найти все, что в той или иной стране я искать место: страна, и если я хочу, чтобы все в определенном состоянии Я ищу местоположение: страна/государство

Это имеет побочный эффект быть ДЕЙСТВИТЕЛЬНО приятным для вложенной огранки.

Смежные вопросы