2014-10-03 3 views
0

У меня есть индекс Elasticsearch с кучей полей, некоторые из которых я хочу использовать вместе со списком по умолчанию по умолчанию. С другой стороны, у меня есть имя пользователя поле, которое должно возвращать результаты для пользователей под названием , быть и т.д.Как заставить фильтр условий игнорировать стоп-слова?

Конечно, когда я запускаю следующий запрос:

{ 
    "query": { 
     "constant_score": { 
      "filter": { 
       "terms": { 
        "username": [ 
         "be" 
        ] 
       } 
      } 
     } 
    } 
} 

ничего возвращается. Я видел различные решения для изменения стандартного анализатора для удаления стоп-слов, но я изо всех сил стараюсь найти, как я буду делать это только для этого поля. Спасибо за любые указатели.

+0

Можете ли вы разместить свое отображение для этого индекса и ввести его? –

ответ

2

Вы можете сделать это следующим образом: добавить пользовательский анализатор, который не должен использовать стоп-слова, а затем явно указать этот анализатор только для тех полей, которые вы хотите, чтобы распознанные слова были открыты (например, поле username).

PUT /stopwords 
{ 
    "settings": { 
    "analysis": { 
     "analyzer": { 
     "my_english": { 
      "type": "english", 
      "stopwords": "_none_" 
     } 
     } 
    } 
    }, 
    "mappings": { 
    "text": { 
     "properties": { 
     "title": { 
      "type": "string" 
     }, 
     "content": { 
      "type": "string" 
     }, 
     "username": { 
      "type": "string", 
      "analyzer": "my_english" 
     } 
     } 
    } 
    } 
} 
+0

ОК, спасибо за это, имеет смысл. Тем не менее, мне нужно сделать это, если поле * имя_пользователя ** не было_анализом **? Я решил, что это может избежать слов остановки, поскольку это будет точное совпадение, но я думаю, нет. – Graham

+0

Если это 'not_analyzed', тогда остатки остаются там, где они есть, но я думаю, что вы теряете способность искать только одно слово в поле. Вам нужно будет найти всю ценность, чтобы получить соответствие. –

+0

Правильно, анализатор - это путь. Благодаря! – Graham

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