【问题标题】:Elasticsearch exact match pharseElasticsearch 完全匹配短语
【发布时间】:2015-01-19 12:21:43
【问题描述】:

我想在 Elasticsearch 中搜索一个短语以获得完全匹配。但是 Elasticsearch 也提供了其他包含的短语。

一个例子;我想搜索“小猫”,但Elasticsearch返回“小猫跳”、“小猫”、“小猫救死扶伤”等...

我只想要准确且只有“小猫”,而不是其他人。我该如何做这个查询?

我的内容喜欢;

{
    title: "little cat",
    content: "bla bla bla"
},
...

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    很大程度上取决于title 的索引方式。对于这样的要求,title 需要为 analyzed as keyword,这意味着 title 中的任何文本都与 ES 内部 Lucene 倒排索引中的文本完全相同。

    term 过滤器将是在分析为 keywordtitle 中搜索 little cat 的选择。

    如果您想在索引时对您的title 字段进行其他操作,您可以add a filter,例如小写任何大写字母。但是,无论如何,您都需要一个keyword 分析器。

    如果您不想更改现在对title 的索引方式,您可以make it as multi_field 并添加一个title_keyword(例如)字段,该字段应该使用您的keyword 分析器进行索引。

    【讨论】:

      【解决方案2】:

      索引字符串字段时,字符串的默认映射索引类型为analyzed(类似于MySQL 上的全文索引)。您应该重新创建映射并将索引类型设置为not_analyzed

      查看这里以了解更多关于Core Typesmapping

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-08
        • 1970-01-01
        • 2018-04-21
        • 1970-01-01
        相关资源
        最近更新 更多