我如何在 Elastic Search 中获得完全匹配过滤器结果

Posted

技术标签:

【中文标题】我如何在 Elastic Search 中获得完全匹配过滤器结果【英文标题】:How i can get exact match filter result in Elastic Search 【发布时间】:2019-08-19 15:13:56 【问题描述】:

我有一个关于弹性搜索的问题,我想在过滤器中搜索完全匹配的内容。例如,如果颜色过滤器仅应用“黑色”,则弹性搜索应仅返回“黑色”产品,而不是产品颜色中包含黑色关键字的其他产品,如“黑灰色”。 我尝试了“match_phrase”而不是“match”,但什么也得不到。

请查看我的 JSON 字符串截图:https://www.screencast.com/t/wjCcpfQwTxw

提前致谢

【问题讨论】:

请显示您尝试过的查询,以及您当前拥有的索引映射。 非常感谢您的回复,请检查上述 JSON 字符串格式。 请不要提供截图,因为它既不容易复制/粘贴也不容易搜索。还需要您的索引映射,谢谢! 【参考方案1】:
You can user term query.
For example: 
GET Your index/_search

    "query": 
        "term": 
            "color.keyword": 
                "value": "Black"
            
        
    


It will return the documents which 'color' field equals to Black.If your color field is text type.Remember add '.keyword' after it.

【讨论】:

.keyword 为我完成了这项工作 我不喜欢将 .keyword 添加到现有字段,我没有得到查询结果。是否有一些配置可以使用这个隐式关键字?我发现我可以在这种查询中将 .anything 添加到字段名称中,并且 API 不会抛出错误。它只是无法返回任何结果。【参考方案2】:

要获得完全匹配,请对字段 color 使用类型 keyword。这是一个 curl 的例子。使用 Elasticsearch 7.3 测试

    创建索引

    curl -X PUT "localhost:9200/products?pretty" -H 'Content-Type: application/json' -d' '

    为 type 关键字的字段颜色定义一个映射。

    curl -X PUT "localhost:9200/products/_mapping?pretty" -H 'Content-Type: application/json' -d' “特性”: “颜色”: “类型”:“关键字” '

    添加两个样本数据集

    *curl -X PUT "localhost:9200/products/_doc/1?pretty" -H 'Content-Type: application/json' -d' “颜色”:“蓝绿色” '

    curl -X PUT "localhost:9200/products/_doc/2?pretty" -H 'Content-Type: application/json' -d' “颜色”:“蓝色” '*

    测试查询。

    curl -X GET "localhost:9200/products/_search?pretty" -H 'Content-Type: application/json' -d' "query": "match": "color": “蓝色” '

【讨论】:

欢迎来到 SO。请给出一个代码示例。现在,您的回答更像是评论。 感谢您的反馈。我添加了一个如何定义关键字字段的详细示例。

以上是关于我如何在 Elastic Search 中获得完全匹配过滤器结果的主要内容,如果未能解决你的问题,请参考以下文章

Spring Elastic Search 自定义字段名称

在 Rails 中循环遍历 form.select(使用 Elastic Search/Searchkick aggs)

Elastic Search 基本操作

Elastic Enterprise Search 在电子商务中创造竞争优势的 6 种方式

如何在预先存在的 SQL 数据库之上使用 Elastic Search?

如何使用现有索引创建 Elastic App Search Engine(来自 GraphDB Elastic Search Connector 的数据)