首页 > 解决方案 > 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 } ]
    })

标签: ruby-on-railselasticsearchfull-text-searchelasticsearch-rails

解决方案


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


推荐阅读