我在带有字段的 flex 搜索中有一个JSON记录

"streetName": "5 Street",
 "name": ["Shivam Apartments"]
我尝试了以下查询,但如果在查询中添加streetName bool,则不会返回任何内容
{
    "query": {
        "bool": {
            "must": [
                {
                    "bool": {
                        "must": {
                            "match": {
                                "name": {
                                    "query": "shivam apartments",
                                    "minimum_should_match": "80%"
                                }
                            }
                        }
                    }
                },
                {
                    "bool": {
                        "must": {
                            "match": {
                                "streetName": {
                                    "query": "5 street",
                                    "minimum_should_match": "80%"
                                }
                            }
                        }
                    }
                }
            ]
        }
    }
}
文档映射
{
    "rabc_documents": {
        "mappings": {
            "properties": {
                "name": {
                    "type": "text",
                    "analyzer": "autocomplete_analyzer",
                    "position_increment_gap": 0
                },
                "streetName": {
                    "type": "keyword"
                }
            }
        }
    }
}

最佳答案

基于E.S文档(Keywords in Elastic Search)

  • “只能通过其确切值搜索关键字字段”。
  • 以及这些关键字也区分大小写。

  • 考虑到上述因素:
  • 在关键字字段
  • 上搜索“5条街”将不匹配“5条街”(“s”与“S”)
  • minimum_should_match 不适用于关键字字段。

  • 建议:对于部分匹配,请使用“文本”映射而不是“关键字”。关键字旨在用于过滤,基于术语的聚合等。

    关于elasticsearch - Elasticsearch 中的邻近相关性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63445790/

    10-11 17:04