我有一个称为字段的字段,该字段位于嵌套字段“名称”中,该字段是 flex 搜索中的“关键字”。
名称字段包含2个值。

  • Jagannathan Rajagopalan
  • Rajagopalan。

  • 如果我查询“Rajagopalan”,我应该只获得项目#2。
    如果我查询完整的Jagannathan Rajagopalan,我应该得到#1。
    我该如何实现?

    最佳答案

    您需要使用用于精确搜索的term query。根据您的用例添加了一个工作示例。
    索引映射

    {
        "mappings": {
            "properties": {
                "name": {
                    "type": "nested",
                    "properties": {
                        "keyword": {
                            "type": "keyword"
                        }
                    }
                }
            }
        }
    }
    
    索引样本文档
    {
        "name" : {
            "keyword" : "Jagannathan Rajagopalan"
        }
    }
    
    还有另一个文件
    {
        "name" : {
            "keyword" : "Jagannathan"
        }
    }
    
    并搜索查询
    {
        "query": {
            "nested": {
                "path": "name",
                "query": {
                    "bool": {
                        "must": [
                            {
                                "match": {
                                    "name.keyword": "Jagannathan Rajagopalan"
                                }
                            }
                        ]
                    }
                }
            }
        }
    }
    
    搜索结果
       "hits": [
                {
                    "_index": "key",
                    "_type": "_doc",
                    "_id": "2",
                    "_score": 0.6931471,
                    "_source": {
                        "name": {
                            "keyword": "Jagannathan Rajagopalan"
                        }
                    }
                }
            ]
    

    关于elasticsearch - 在Elastic Search中匹配存储的值和查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64678624/

    10-10 00:32
    查看更多