弹性搜索多字段的一个子字段中的错误值

2024-04-16 05:11:53 发布

您现在位置:Python中文网/ 问答频道 /正文

ElasticSearch用多个字段为“name”索引我的业务文档,这样我就可以对不同程度的名称匹配(精确匹配、多个单词中的一个等)进行加权。这是我地图上的一个片段

"name" : {

                "type" : "multi_field",
                "fields": {
                    "name":          {"type" : "string", "store" : "yes", "index_analyzer"  : "AutoCompleteIndexAnalyzer",   "search_analyzer" : "AutoCompleteSearchAnalyzer"},
                    "exact_match":   {"type" : "string", "store" : "yes", "index_analyzer"  : "ExactMatchNameIndexAnalyzer", "search_analyzer" : "ExactMatchNameSearchAnalyzer"},
                    "auto_name":     {"type" : "string", "store" : "yes", "index_analyzer"  : "keyword",                     "search_analyzer" : "keyword"},
                 }
            },

因为它是一个多字段,所以我只提供一次值——ES只是分析它多次。在

所以我完全困惑于‘未中断’子字段如何得到完全不正确的值,而‘name’子字段是正确的。我不明白为什么精确匹配不起作用,所以我写了一个脚本字段,让我在搜索结果中使用“精确匹配”标记:

^{pr2}$

如果有人对此有任何想法,我将非常感激。在

谢谢!在


Tags: storename文档名称searchstringindextype