node.js - ElasticSearch - 搜索精确的文本匹配而不在索引中保留两个副本?

标签 node.js elasticsearch full-text-search

如果字段映射包含"index": "not_analyzed",则 ElasticSearch 支持文本精确匹配。这样,该字段就不会被标记化,ES 将使用整个字符串进行精确匹配。 The Documentation

有没有一种方法可以同时支持全文搜索和精确匹配,而无需创建两个字段:一个用于全文,另一个使用 not_analyzed 映射进行精确匹配?

示例用例:

我们想按书名搜索。

  • 我喜欢树应该返回全文搜索的结果

  • exact="I like trees" 应该仅返回具有确切标题 I like trees 的书籍,而没有其他内容。不区分大小写就可以了。

最佳答案

您可以使用term过滤器进行完全匹配搜索

过滤器看起来像这样

{
   "term" {
       "key" : "value"
   }
}

查询如下所示:

{
    "query" : {
        "filtered" : {
            "filter" : {
                "term" : { 
                    "key" : "value"
                }
            }
        }
    }
}

关于node.js - ElasticSearch - 搜索精确的文本匹配而不在索引中保留两个副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27466268/

相关文章:

mysql - 当 Express 应用程序中捕获并重新抛出数据库错误时, Node 退出

regex - NodeJS/Express - 使用正则表达式进行路由

elasticsearch - 在Elasticsearch中使用Jest Client更新部分文档

java - elasticsearchrepository 在字段中保存空值

具有多个全文索引的Mysql全文搜索

indexing - 我可以在 View 上使用全文索引吗?

javascript - 在同构 react 应用程序中的快速中间件之间传递状态

node.js - 在哪里保存授权 token

mysql - 设置Kafka连接器管道时出错

java - 基于 Apache Solr 的 Spring boot 应用程序的搜索功能