2017-03-09 50 views
0

我有字段"name":"The leonardo da vinci"。在映射时这个字段是用标准分析器分析的。当我在这个领域使用match_phrase它还可选配如文档The leonardo da vinci USThe leonardo da vinci UKThe leonardo da vinci GBR如何在Elasticsearch中找到确切的短语?

我怎么能抽到仅具有"name":"The leonardo da vinci"不改变我的映射文件?

可以吗?

感谢

回答

0

如果你正在寻找一个精确匹配,你不需要使用匹配的短语,只是用一个名词查询。

{ 
    "query": { 
    "term": { 
     "name":"The leonardo da vinci" 
    } 
    } 
} 

查看this了解更多关于术语和全文搜索的信息。

编辑:通过填充两个namename.raw

'name': { 
    'type': 'text', 
    'fields': { 
    'raw': { 
     'type': 'keyword' 
    } 
    } 
} 

重新索引,然后你可以在name场使用匹配查询全文搜索:在分析了现场的情况下,你可以将子场添加到它和一个术语查询name.raw上的确切搜索。

+0

是的,我得到了..但是,如果我的领域没有分析,但在这种情况下,我的领域是分析使用该术语.. – Seeker

+0

公平,请参阅编辑 – paqash

+0

谢谢..有没有选择,而不是改变映射,因为我想要做到这一点,而不是reindexing。 – Seeker