我正在使用ES创建一个预先搜索。我希望部分匹配我有一个ngram分析器。另外,我希望在字段开头匹配的内容更高,所以我有一个提升的prefix_phrase查询。
我的问题是我需要查询prefix_phrase中的原始值,否则它将匹配所有匹配的ngrams,而不是给我我想要的。
示例:
emails: [test_123@gmail.com, 123_something@facebook.com]
search: 123
我希望123_something
先回来。但由于ngram分析器,值123@gmail.com
也匹配前缀查询。
有没有办法查询分析字段的原始值(也就是实际存储在文档中的值)
像这样的东西
{
match: {
query: 123
type: 'prefix'
fields: ["email"]
original: 1
}
}
或者我是否只需将原始值存储在单独的字段中?
这个答案:search a analyzed field through the stored original value in elasticsearch指向不存在的文档。看起来不推荐使用多字段值。