对跨 Elasticsearch 类型的所有字段使用 Completion Suggester
Use Completion Suggester for all the fields of across the Elasticsearch type
我正在我的应用程序中实施 Completion Suggester,这是我的要求:
我正在使用 Elasticsearch 5.5.3(支持多种类型)。我的 Elasticsearch 中有大约 10 种类型,每种类型都有大约 10 个字符串字段。我想要做的是制作一个搜索框,当用户开始使用完成建议器输入时,它将完成短语(这 10 种类型的任何字段)。最好的方法是什么?使用 _all 字段是个好主意吗?
是的,使用 "custom all field" field of type completion
完全可以做到
首先,创建包含所有类型的索引,并确保 copy 类型为 completion
:
的自定义字段中的每个字段
PUT my_index
{
"mappings": {
"type1": {
"properties": {
"field1": {
"type": "text",
"copy_to": "my_all"
},
"field2": {
"type": "text",
"copy_to": "my_all"
},
"my_all": {
"type": "completion"
}
}
},
"type1": {
"properties": {
"field1": {
"type": "text",
"copy_to": "my_all"
},
"field2": {
"type": "text",
"copy_to": "my_all"
},
"my_all": {
"type": "completion"
}
}
}
}
}
然后,您将像这样查询完成数据(即不指定任何映射类型并使用公共 my_all
字段):
POST my_index/_search
{
"suggest": {
"my-suggest": {
"prefix": "bla",
"completion": {
"field": "my_all"
}
}
}
}
我正在我的应用程序中实施 Completion Suggester,这是我的要求:
我正在使用 Elasticsearch 5.5.3(支持多种类型)。我的 Elasticsearch 中有大约 10 种类型,每种类型都有大约 10 个字符串字段。我想要做的是制作一个搜索框,当用户开始使用完成建议器输入时,它将完成短语(这 10 种类型的任何字段)。最好的方法是什么?使用 _all 字段是个好主意吗?
是的,使用 "custom all field" field of type completion
首先,创建包含所有类型的索引,并确保 copy 类型为 completion
:
PUT my_index
{
"mappings": {
"type1": {
"properties": {
"field1": {
"type": "text",
"copy_to": "my_all"
},
"field2": {
"type": "text",
"copy_to": "my_all"
},
"my_all": {
"type": "completion"
}
}
},
"type1": {
"properties": {
"field1": {
"type": "text",
"copy_to": "my_all"
},
"field2": {
"type": "text",
"copy_to": "my_all"
},
"my_all": {
"type": "completion"
}
}
}
}
}
然后,您将像这样查询完成数据(即不指定任何映射类型并使用公共 my_all
字段):
POST my_index/_search
{
"suggest": {
"my-suggest": {
"prefix": "bla",
"completion": {
"field": "my_all"
}
}
}
}