2015-04-03 2 views
0

У меня возникли проблемы с получением этого эластичного поискового запроса, чтобы вернуть данные, которые я ожидаю, что он вернется. Это мой запрос:Почему этот эластичный поисковый запрос с обязательной оговоркой не возвращает никаких документов?

curl -XGET '0.0.0.0:9200/local/candidate/_search?routing=company_1_candidates&pretty' -d ' 
{ 
    "query":{ 
     "filtered": { 
      "query": { 
       "multi_match": { 
        "fields": [ 
         "candidate_name", 
         "candidate_city", 
         "candidate_country" 
        ], 
        "query": "j", 
        "type": "phrase_prefix" 
       } 
      }, 
      "filter": { 
       "bool": { 
        "must": [ 
         { 
          "term": { 
           "company_id": 1 
          } 
         }, 
         { 
          "term": { 
           "candidate_city": "Rotterdam" 
          } 
         } 
        ] 
       } 
      } 
     } 
    } 
}' 

Когда я запускаю этот запрос с только company_id термина в сусле статьи, я нахожу эту запись:

{"candidate_name":"J Kennis","candidate_id":2,"candidate_tags":[],"candidate_city":"Rotterdam","candidate_country":"Nederland","company_id":1} 

Но когда я включаю "candidate_city": "Rotterdam" бит в query, он возвращает нулевые результаты. Я что-то упустил?

ответ

1

Возможно, потому что поле кандидата_city индексируется с помощью анализатора, который включает анализатор токенов «ниже», но фильтр термина не анализируется.

Если вы измените фильтр на "term": {"candidate_city": "rotterdam"} или "match": {"candidate_city": "Rotterdam"} вы, вероятно, получить документ обратно.

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