匹配弹性搜索中的存储值和查询

Matching the stored values and queries in Elastic Search

我有一个名为“名称”的嵌套字段,它是弹性搜索中的“关键字”。

名称字段包含 2 个值。

  1. 贾甘纳坦·拉贾戈帕兰
  2. 拉贾戈帕兰。

如果我查询“Rajagopalan”,我应该只会得到第 2 项。 如果我查询完整的 Jagannathan Rajagopalan,我应该得到 #1。

如何实现?

您需要使用用于精确搜索的term query。根据您的 use-case.

添加了一个工作示例

索引映射

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