假设我在ElasticSearch中有一个文档,它在源代码中不包含字段“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);
我的回答是空白的。
谢谢您。
2条答案
按热度按时间wko9yo5t1#
你的elasticsearch查询肯定没有什么问题
似乎
provider
字段是对象或嵌套类型,而在查询中您只是提到Coursera
但它应该与name
子字段provider
字段并基于对象或嵌套数据类型,您需要修改查询。您正在使用
term query
如果你的name
字段定义为text
在索引时间和Coursera
有资本C
不匹配,你需要使用match
查询文本字段。5vf7fwbs2#
谢谢,筑巢是个问题。我以为它会对目标进行搜索。
遇到了好线索。
解决方法如下: