【问题标题】:Elasticsearch - Query original fieldElasticsearch - 查询原始字段
【发布时间】:2016-08-30 14:50:11
【问题描述】:

我正在使用 ES 创建一个预先输入的搜索。我想部分匹配我有一个 ngram 分析器。此外,我希望在字段开头匹配的内容更高,因此我有一个提升的 prefix_phrase 查询。

我的问题是我需要查询 prefix_phrase 中的原始值,否则它将匹配所有匹配的 ngram,而不是给我想要的。

例子:

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 指向不存在的文档。看起来多字段值已被弃用。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    在这种情况下,最好的方法确实是多字段,并且最近的文档已经进行了一些重组。你会发现更多关于多字段here

    为不同目的以不同方式索引同一字段通常很有用。例如,可以将字符串字段索引为用于全文搜索的分析字段,以及用于排序或聚合的 not_analyzed 字段。或者,您可以使用标准分析器、英语分析器和法语分析器来索引字符串字段。

    这就是多字段的目的。大多数数据类型通过 fields 参数支持多字段。

    你可以找到一个完整的例子here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-18
      • 2022-12-04
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 2019-02-25
      相关资源
      最近更新 更多