如何在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");
这应该给你完全匹配。
- 使用Spring-Data Elasticsearch在Elasticsearch中动态创建索引名称
- 使用Java API从Elasticsearch获取所有记录
- Elasticsearch – 使用java api删除嵌套对象无法正常工作
- elasticsearch将对象插入索引
- 在ElasticSearch中使用Java API时如何从JSON DSL构造QueryBuilder?
- ElasticSearch索引问题TransportSerializationException
- 在弹性搜索中使用service install命令“JAVA_HOME指向无效的Java安装问题”
- elasticsearch NodeBuilder与TranportClient
- 从java开始弹性搜索实例?