Elasticsearch中的完成提示和完全匹配

时间:2019-05-15 10:05:21

标签: elasticsearch search-suggestion

我对Elasticsearch完成有时具有的行为感到有些惊讶。我已经建立了一个带有建议字段的映射。在建议字段的输入中,我输入了三个元素,分别是一个证券的名称,isin和发行者。

这是我使用的映射:

function stopStream() {
    if (!window.streamReference) return;

    window.streamReference.getAudioTracks().forEach(function(track) {
        track.stop();
    });

    window.streamReference.getVideoTracks().forEach(function(track) {
        track.stop();
    });

    window.streamReference = null;
}

当我要使用此查询查询索引时:

 "suggest": {
                    "type" : "completion",
                    "analyzer" : "simple"
                } 

我会得到一个结果列表,但不一定要带我的确切前缀,而在大多数情况下,其精确匹配不在顶部。

所以我想知道是否有一种方法可以增强建议中的完全匹配项,并在可能的情况下使此类完全匹配项位于第一位。

1 个答案:

答案 0 :(得分:0)

我认为我的问题是通过使用自定义分析器解决的:简单的分析器对于我输入的内容并不方便。

"settings": {
    "analysis": {
        "char_filter": {
            "punctuation": {
                "type": "mapping",
                "mappings": [".=>"]
            }
        },
        "filter": {},
        "analyzer": {
            "analyzer_text": {
                "tokenizer": "standard",
                "char_filter": ["punctuation"],
                "filter": ["lowercase", "asciifolding"]
            }
        }
    }
},

            "suggest": {
                "type" : "completion",
                "analyzer" : "analyzer_text"
            }