是否有任何分析器在弹性搜索中执行精确的单词匹配

时间:2014-03-12 05:02:15

标签: elasticsearch

是否有任何分析仪在弹性搜索中执行精确的单词匹配

示例如果,我有像#34; America"和#34;美国人"和#34;美国",如果我搜索"美国"我应该只得到第一个..使用标准分析仪,它给出了所有三个。

我想在查询时确保这一点。我不想对现有索引进行更改。请帮我。

2 个答案:

答案 0 :(得分:0)

将映射设置为not_analyzed

curl -XPOST localhost:9200/test -d '{
    "mappings" : {
        "type1" : {
            "properties" : {
                "field1" : { "type" : "string", "index" : "not_analyzed" }
            }
        }
    }
}'

这对你的输入字符串没有任何作用,但仍然允许它可以搜索。请注意,如果您这样做,搜索“美国”将不匹配“美国”,因为情况有所不同。

如果您希望能够匹配这些,那么您应该尝试keyword分析器。

curl -XPOST localhost:9200/test -d '{
        "mappings" : {
            "type1" : {
                "properties" : {
                    "field1" : { "type" : "string", "analyzer" : "keyword" }
                }
            }
        }
    }'

答案 1 :(得分:0)

你不必担心分析器..在查询时使用术语和术语查询它会像你问的那样表现出来。