繁体   English   中英

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

[英]Elasticsearch match field=value (not contains)

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

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

查询: dress AND gender:male

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

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

我通过 Ruby on Rails 使用它

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\""

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM