elasticsearch 前缀自动完成建议弹性搜索,elasticsearch,autocomplete,elasticsearch,Autocomplete" /> elasticsearch 前缀自动完成建议弹性搜索,elasticsearch,autocomplete,elasticsearch,Autocomplete" />

elasticsearch 前缀自动完成建议弹性搜索

elasticsearch 前缀自动完成建议弹性搜索,elasticsearch,autocomplete,elasticsearch,Autocomplete,我正在尝试使用ElasticSearch实现前缀自动完成功能,以下是我对建议字段的映射: PUT vdpinfo { "mappings": { "details" : { "properties" : { "suggest" : { "type" : "completion" }, "title": {

我正在尝试使用ElasticSearch实现前缀自动完成功能,以下是我对建议字段的映射:

PUT vdpinfo
{
    "mappings": {
        "details" : {
            "properties" : {
                "suggest" : {
                    "type" : "completion"
                },
                "title": {
                  "type": "keyword"
                }
            }
        }
    }
}
我用单字和双字(bigram)索引了一些数据,例如:

{"suggest": "leather"}
而且:

{"suggest": "leather seats"}
{"suggest": "2 leather"}
我的搜索查询如下:

GET /vdpinfo/details/_search
{
        "suggest": {
            "feature-suggest": {
                "prefix": "leather",
                "completion": {
                    "field": "suggest"
                }
            }
        }
    }
但结果同时返回
{“建议”:“leather”}
{“建议”:“2 leather”}
,更重要的是,
{“建议”:“2 leather”}
的排名高于
leather


我的问题是为什么
2
会返回,为什么它不像查询中那样执行
前缀
自动完成<代码>前缀:leather?

这是因为用于分析数据的默认分析器是分析器,每当遇到非字母字符时,分析器会将文本分解为术语,因此
2 leather
实际上被索引为
leather
,因此显示该结果的原因(以及为什么它首先出现)

默认情况下,他们使用
简单
分析器而不是
标准
分析器的原因是不提供基于停止词的建议()

因此,如果您改用
标准
分析器,您将不会得到任何关于
2皮革

PUT vdpinfo
{
    "mappings": {
        "details" : {
            "properties" : {
                "suggest" : {
                    "type" : "completion",
                    "analyzer" : "standard"
                },
                "title": {
                  "type": "keyword"
                }
            }
        }
    }
}

这是因为用于分析数据的默认分析器是分析器,每当遇到非字母字符时,它会简单地将文本分解为术语,因此
2 leather
实际上被索引为
leather
,这就是为什么会显示该结果(以及为什么首先显示该结果)

默认情况下,他们使用
简单
分析器而不是
标准
分析器的原因是不提供基于停止词的建议()

因此,如果您改用
标准
分析器,您将不会得到任何关于
2皮革

PUT vdpinfo
{
    "mappings": {
        "details" : {
            "properties" : {
                "suggest" : {
                    "type" : "completion",
                    "analyzer" : "standard"
                },
                "title": {
                  "type": "keyword"
                }
            }
        }
    }
}

工作很好。非常感谢你的解释。酷,很高兴它有帮助!工作很好。非常感谢你的解释。酷,很高兴它有帮助!