如何在elasticsearch(java API)中使用queryString()?

我正在研究弹性搜索v1.1.1我遇到了搜索查询的问题。我想知道如何解决下面的障碍

这是我的映射

{ "token" : { "type" : "string" } } 

索引记录中的数据是

  { token : "4r5etgg-kogignjj-jdjuty687-ofijfjfhf-kdjudyhd" } 

我的搜索是

 4r5etgg-kogignjj-jdjuty687-ofijfjfhf-kdjudyhd 

我想要记录的完全匹配,我需要使用哪个查询来获得记录的完全匹配

  QueryBuilders.queryString() ? 

我检查了queryString(),然后我最终确定它对完全匹配没用

请建议我

您可以在字符串周围添加引号以进行完全匹配:

 QueryBuilders.queryString("\"4r5etgg-kogignjj-jdjuty687-ofijfjfhf-kdjudyhd\""); 

如果您不希望在上面的字符串索引上部分匹配该值的未标记版本并在其上进行搜索。 在您的映射中添加:

 "token": { "type": "multi_field", "fields": { "untouched": { "type": "string", "index": "not_analyzed" } } } 

然后搜索:

 { "query": { "match": { "token.untouched": "4r5etgg-kogignjj-jdjuty687-ofijfjfhf-kdjudyhd" } } } 

更改映射,以便ElasticSearch在索引时不会触摸您的数据,如下所示:

 { "token" : { "type" : "string", "index": "not_analyzed" } } 

然后像这样从java运行TermQuery

 QueryBuilders.termQuery("token", "4r5etgg-kogignjj-jdjuty687-ofijfjfhf-kdjudyhd"); 

这应该给你完全匹配。