0

我在通过 elasticsearch 搜索时遇到问题。我有product字段索引titlegender

当我进行查询时,default_field: title我只需要获得结果gender=male(不是女性或其他人)

询问:dress AND gender:male

结果包含两种性别:malefemalemale,female

在我看来,gender:*搜索所有包含male但不完全匹配的值。如何正确查询?

我通过 Ruby on Rails 使用它

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

2 回答 2

0

性别是一种keyword数据类型吗?我怀疑您离开/设置了该gender字段的默认映射(即文本+关键字子字段)。在这种情况下,请尝试以下查询:dress AND gender.keyword:male

于 2019-11-10T22:27:11.170 回答
0

据此,只需要将值放在双引号中..

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

如果需要,不要忘记逃脱它们"gender:\"male\""

于 2019-11-11T13:01:49.427 回答