【发布时间】:2026-02-06 22:55:01
【问题描述】:
我有类似于标签的输入,每条记录有几个字符串,它们应该被视为关键字,而不是被标记或分解或以任何特定方式分析。我希望它按“原样”显示在刻面中,包括空格、斜杠、破折号和 & 号。
我认为这里不需要 multi_field。每条记录“keyPhrases”有一个输入值,但输入值是一个简单的 json 字符串数组。
我希望 elasticsearch 将每个值插入到 facets 中,并用所有短语标记记录。 通常每条记录只有一两个或三个短语,但可能会有更多。 keyPhrases 的集合相当小,像 30 或最多像 50。它们可以被认为是“类别”。
即使我尝试指定 not_analyzed、关键字标记器、关键字分析器并尝试类似的东西,分面仍然会分解输入字符串并使用小写字母。
我有其他字段在返回的方面保持我希望的间距和大小写,但是这些字段未分析并且也是 store: true,但也只是每条记录只有 1 个字符串输入,而不是每条记录很多.
我可以只取每条记录的前 1 个 keyPhrase 并将其展平,但理想情况下,所有标签都可以工作并且可以作为构面使用。
关于如何做到这一点的任何想法?
【问题讨论】:
-
你能发布你的标签字段映射吗?你可以得到这样的映射:
curl -XGET 'http://host-name:9200/index-name/type-name/_mapping' -
是的,这绝对应该按原样工作。在进行分析时,每个数组值都被视为字段的字符串。所以,如果你将该字段设置为 not_analyzed,那么你应该是好的。
标签: tags indexing elasticsearch