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

我在通过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 } ]
    })
drahcir88t 回答:Elasticsearch匹配字段=值(不包含)

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

,

根据this,我只需要将值放在双引号中即可。

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

不要忘记在需要时{@ 1}进行逃脱

本文链接:https://www.f2er.com/3127529.html

大家都在问