ElasticSearch 6.x不支持单个索引中的多个类型映射。所以我有2个索引:
我希望使用两个索引具有自动完成功能(我使用完成建议器)。有可能吗?
这是我映射location
索引的示例:
{
"location": {
"mappings": {
"location": {
"properties": {
"id": {
"type": "long"
},
"name": {
"type": "text"
},
"suggest": {
"type": "completion",
"analyzer": "simple",
"preserve_separators": false,
"preserve_position_increments": false,
"max_input_length": 50
}
}
}
}
}
}
postcode
索引:
{
"postcode": {
"mappings": {
"postcode": {
"properties": {
"code": {
"type": "text"
},
"suggest": {
"type": "completion",
"analyzer": "simple",
"preserve_separators": true,
"preserve_position_increments": true,
"max_input_length": 50
}
}
}
}
}
}
如果我只是在请求中跳过索引名称,则可以执行请求,例如
POST _search
{
"suggest": {
"suggestion": {
"prefix": "abc",
"completion": {
"field": "suggest"
}
}
}
}
它在两个索引中搜索但结果不正确。例如,在之前的请求中,我们要搜索的值以abc
开头。如果location
索引包含许多值为abc
的文档,例如abcd
或abcde
,即使广告中包含确切的值postcode
,回复也不会包含来自abc
索引的值。
编辑:
我对多个索引的错误行为表示不对。如果我们只使用一个索引(例如位置)并再推出一个具有建议值abc
的文档,那么我们将看到相同的行为。这是因为所有结果都具有相同的score = 1
。
那么如何才能为完全匹配得分更高?
我发现这张已关闭的机票(https://github.com/elastic/elasticsearch/issues/4759),但我不明白我应该怎么做以达到适当的行为?它没有开箱即用。