我有一个名为的字段位于嵌套字段“名称”内,该字段是弹性搜索中的“关键字”。
名称字段包含 2 个值。
- 贾格纳坦·拉贾戈帕兰
- 拉贾戈帕兰。
如果我查询“Rajagopalan”,我应该只得到项目#2。如果我查询完整的 Jagannathan Rajagopalan,我应该得到 #1。
我如何实现它?
我有一个名为的字段位于嵌套字段“名称”内,该字段是弹性搜索中的“关键字”。
名称字段包含 2 个值。
如果我查询“Rajagopalan”,我应该只得到项目#2。如果我查询完整的 Jagannathan Rajagopalan,我应该得到 #1。
我如何实现它?
您需要使用用于精确搜索的术语查询。根据您的用例添加了一个工作示例。
索引映射
{
"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"
}
}
}
]