2016-05-14 3 views
0

я индексированный 2 объект (ES 1.5)ElasticSearch не возвращает результата на BOOL фильтре, содержащий тир

{ 
    tags: ["tag1","bla-bla"] 
} 

{ 
    tags: ["tag2"] 
} 

Если я сделать этот запрос:

{ 
    "query": { 
     "filtered": { 
      "filter": { 
       "bool": { 
        "should": 
        [ 
         { 
          "term": { 
           "tags": "bla-bla" 
          } 
         } 
        ] 
       } 
      } 
     } 
    } 
} 

упругого возврат никакого результата, потому что есть "-" в поле "метки".

Если я ищу это, она работает, у меня есть 1 результат:

... 
    "term": { 
     "tags": "tag1" 
    } 
... 

Может кто-то объяснить, почему, когда я поставил прочерк («-») в «метки» поле, нет результата?

ответ

1

Если не указано обычное, Elasticsearch будет Standart Analyzer для анализа полей. И стандартный анализатор удалит штрафные санкции (- в вашем случае) и отметьте ваши условия как [tag1, bla].

Вы можете проверить анализировались формы с term vectors:

GET <index>/<type>/<id>/_termvectors?fields=tags 
+0

Спасибо, я добавил «„индекс“:„not_analyzed“» в отображении на поле тегов, теперь он работает. –

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