Поле соответствия Elasticsearch = значение (не содержит) - PullRequest
0 голосов
/ 11 ноября 2019

У меня возникла проблема при поиске черезasticsearch. У меня есть индекс product с полями title и gender

Когда я делаю запрос с default_field: title, мне нужно получать результаты только с gender=male (не женский или другие)

query: dress AND gender:male

Результаты содержат оба пола: male и female и male,female

Мне кажется, что gender:* ищет все, что содержит male,но не полное соответствие стоимости. Как правильно сделать запрос?

Я использую его через Ruby on Rails

Product.search({
      query: {
        query_string: {
            query: query,
            default_field: "title"
          }
        },
        size: per_page,
        sort: [ _score: { order: relevance } ]
    })

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

В соответствии с это Мне просто нужно поместить значение в двойные кавычки ..

query = '(dress) AND (gender:"male")'

не забывайте избегать их при необходимости "gender:\"male\""

0 голосов
/ 11 ноября 2019

Является ли пол типом данных keyword? Я подозреваю, что вы оставили / установили сопоставление по умолчанию для поля gender (т. Е. Подполя текст + ключевое слово). В этом случае попробуйте следующий запрос: dress AND gender.keyword:male

...