![](/img/trans.png)
[英]Spring Data elasticsearch @Query annotation for nested objects
[英]ElasticSearch Nested Query not returning data
我在ElasticSearch(客戶)中有一個具有以下部分映射的索引:
"addresses": {
"type": "nested",
"properties": {
"address": {
"type": "keyword"
},
"phone": {
"type": "keyword"
}
}
},
我正在嘗試搜索特定的地址(我們稱其為“ foo street”)。 我正在使用ElasticSearch 6.3。 和RestHighLevelClient(6.3)。
就我而言,以下變量具有以下值:
docName = "addresses"
name = "address"
value = "foo street"
我知道客戶索引中的至少一個文檔的地址為“ foo street”
我創建NestedQueryBuilder的代碼是這樣的:
QueryBuilder innerQuery = QueryBuilders.matchQuery(name, value);
NestedQueryBuilder nestedQueryBuilder = QueryBuilders.nestedQuery(
docName, innerQuery, ScoreNode.None);
SearchRequest request = new SearcRequest("customers");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(nestedQueryBuilder);
searchSourceBuilder.from(from);
searchSourceBuilder.size(size);
request.source(searchSourceBuilder);
如果我記錄我的NestedQueryBuilder對象(調用toString(),這就是我得到的:
{
"nested" : {
"query" : {
"match" : {
"ip_address" : {
"query" : "10.214.159.193",
"operator" : "OR",
"prefix_length" : 0,
"max_expansions" : 50,
"fuzzy_transpositions" : true,
"lenient" : false,
"zero_terms_query" : "NONE",
"auto_generate_synonyms_phrase_query" : true,
"boost" : 1.0
}
}
},
"path" : "links",
"ignore_unmapped" : false,
"score_mode" : "none",
"boost" : 1.0
}
}
為什么我沒有任何點擊?
以下是SearchResponse中的值:
Status: OK
Took: 0s
terminatedEarly: null
timedOut: false
total hits: 0
maxScore: NaN
您應該對嵌套字段使用完全限定的名稱。 使用links.ip_address
而不是ip_address
。
您的查詢應如下所示:
{
"nested": {
"query": {
"match": {
"links.ip_address": { <--------------------- change here
"query": "10.214.159.193",
"operator": "OR",
"prefix_length": 0,
"max_expansions": 50,
"fuzzy_transpositions": true,
"lenient": false,
"zero_terms_query": "NONE",
"auto_generate_synonyms_phrase_query": true,
"boost": 1
}
}
},
"path": "links",
"ignore_unmapped": false,
"score_mode": "none",
"boost": 1
}
}
在代碼中:
String fullName = docName + "." + name;
QueryBuilder innerQuery = QueryBuilders.matchQuery(fullName, value);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.