Elasticsearch匹配字段=值(不包含)



我在弹性搜索中搜索时遇到问题。我有带字段titlegender的索引product

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

查询:dress AND gender:male

结果包含两种性别:malefemale以及male,female

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

我通过RubyonRails 使用它

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

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

根据这个,我只需要把值放在双引号中。。

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

如果需要,不要忘记逃离"gender:"male""

最新更新