Elasticsearch query_string完全匹配

时间:2013-12-07 21:46:03

标签: elasticsearch

我的索引包含值为field的{​​{1}}视频。如果我执行以下查询:

1.flv

查询仍会返回1.flv。

的所有记录

有人能指出我正确的解决方案吗?

以下是1.flv返回的示例数据(如您所见,没有任何内容包含2.flv!)

"query": {
    "query_string": {
        "query": "2.flv"
    }
}

1 个答案:

答案 0 :(得分:6)

您所看到的是标准标记器(默认/标准分析器的一部分)的结果,它标记了句点字符(.)等。有关如何分析它的快速示例,请参阅this play

有很多方法可以通过Elasticsearch实现您的目标,例如更新映射并将video字段的分析器更改为例如上面提到的keyword分析器,可能使用多字段输入类型,将字段映射配置为index: not_analyzed等,但一个可能适合您的简单解决方案是确保使用AND运算符。

默认情况下,query string query使用OR运算符:

  

default_operator:如果未指定显式运算符,则使用默认运算符。例如,使用OR的默认运算符,匈牙利的查询资本将转换为OR匈牙利的资本OR,并且使用AND的默认运算符,相同的查询将转换为AND匈牙利的资本AND。默认值为OR。

因此,要么对运算符显式,要么将其设置为默认值。 This play还会显示这两种技术(右下方的搜索#1和搜索#2标签)。