我正在嘗試使用 hibernatesearh 6 查詢 elasticsearch。以下是傳送到 elasticsearch 的 json 查詢。根據此處的文檔,它看起來很好:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html
{"query":{"query_string":{"fields":["addresses.address_key"],"query":"3g5g36ee-45b0-4636-79fe-9aaf446b7ab6"}}}
但是,收到以下例外訊息:
org.hibernate.search.util.common.searchexception: hsearch400007: elasticsearch request failed: hsearch400090: elasticsearch response indicates a failure. request: post /employee-read/_search with parameters {from=0, size=10, track_total_hits=true} response: 400 'bad request' from 'http://localhost:9200' with body { "error": { "root_cause": [ { "type": "parsing_exception", "reason": "unknown query [query]", "line": 1, "col": 19 } ], "type": "parsing_exception", "reason": "unknown query [query]", "line": 1, "col": 19, "caused_by": { "type": "named_object_not_found_exception", "reason": "[1:19] unknown field [query]" } }, "status": 400 }
以下是實體:
@indexed(index = "employee") public class employee { @fulltextfield(name = "employee_key") private string employeekey; @fulltextfield(name = "first_name") private string firstname; @indexedembedded(includeembeddedobjectid = true, includedepth = 2) private address addresses; } public class address { @fulltextfield(name = "address_key") private string addresskey; @fulltextfield(name = "street_name") private string streetname; }
以下是從 elastic 取得資料的程式碼,其中 predicatefunction 為: (elasticsearchsearchpredicatefactory f) -> f.fromjson(queryjson)
SearchSession searchSession = Search.session(entityManager); SearchResult<Employee> searchResult = searchSession.search(Employee.class) .extension(ElasticsearchExtension.get()) .where(searchPredicateFactory -> { return predicateFunction.apply(searchPredicateFactory); }) .fetch(Math.toIntExact(page.getOffset()), page.getPageSize());
hibernate search 希望您傳遞查詢本身,而無需包裝器 json 物件。請參閱範例 此處。因此,在您的情況下,您應該傳遞:
{ "query_string":{ "fields":[ "addresses.address_key" ], "query":"3g5g36ee-45b0-4636-79fe-9aaf446b7ab6" } }
以上是查詢ElasticSearch時出現named_object_not_found_Exception的詳細內容。更多資訊請關注PHP中文網其他相關文章!