可以说我在Elastic Search中有文档,该文档的_source中确实包含字段“provider”。
我尝试了很多查询,但是似乎没有一个查询返回带有搜索值的文档。
文件:
"_source" : {
"jobs" : [ ],
"provider" : {
"id" : "1",
"name" : "Coursera"
},
"sckLevels" : [ ],
"scks" : [ ],
"trArea" : [ ],
"trElems" : [ ],
"training" : {
"description" : "Cyber sec desc",
"id" : "0",
"img" : "img link",
"link" : "https://google.com",
"name" : "Cyber sec",
"trainingProvID" : "1"
}
我的查询代码是:SearchRequest searchRequest = new SearchRequest(index);
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.termQuery("provider", "Coursera"));
searchRequest.source(sourceBuilder);
this.multiRequest.add(searchRequest);
我的回答是空白。谢谢。
最佳答案
您的Elasticsearch查询绝对没有问题
provider
字段是对象或嵌套类型的,而在查询中您只是提到Coursera
,但应与name
字段的provider
子字段匹配,并且基于对象或嵌套的数据类型,您需要修改查询。term query
并用于关键字(即完全匹配),如果将name
字段定义为text
,则它将在索引时间将其转换为小写,而带有大写Coursera
的C
将不匹配,您需要使用match
查询在文本字段上。关于java - ElasticSearch搜索字段值不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63618058/