匹配ElasticSearch中的存储值和查询

bweufnob  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(1)|浏览(335)

我有一个名为的字段,它位于嵌套字段“name”中,该字段是ElasticSearch中的“关键字”。
名称字段包含2个值。
拉贾戈帕兰
拉贾戈帕兰。
如果我查询“rajagopalan”,我应该只得到第2项。如果我查询完整的jagannathan rajagopalan,我应该得到1。
我如何实现它?

cbjzeqam

cbjzeqam1#

您需要使用用于精确搜索的术语查询。根据您的用例添加了一个工作示例。
索引Map

{
    "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"
                    }
                }
            }
        ]

相关问题