次のドキュメントを ElasticSearch ドメインに挿入しました。
{"depID:": "5656", "employeeID": "7777", "jobID": "2345"}
{"depID:": "6767", "employeeID": "9999", "jobID": "2345"}
{"depID:": "7676", "employeeID": "8888", "jobID": "2345"}
depID で SearchRequest を実行すると、0 件のヒットが得られます。しかし、employeeIDs または jobIDs でそれを実行すると、応答で正しいヒットが得られます。ここで何が間違っているのかわかりません。以下は、これらのドキュメントを作成する方法です。
public IndexResponse indexDocumentRequest(final String indexName, final String jsonDocument) throws IOException {
IndexRequest indexRequest = new IndexRequest(indexName);
indexRequest.source(jsonDocument, XContentType.JSON);
return restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT);
}
IndexResponse indexResponse =
esDao.indexDocumentRequest("employees", "{\"depID:\": \"5656\", \"employeeID\": \"7777\", \"jobID\": \"2345\"}");
以下は、SearchRequests を実行しているメソッドです。
public SearchResponse searchDocumentRequest(final String indexName, final String jsonDocument) throws IOException {
QueryBuilder queryBuilder = QueryBuilders.wrapperQuery(jsonDocument);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(queryBuilder);
SearchRequest searchRequest = new SearchRequest();
searchRequest.indices(indexName);
searchRequest.source(searchSourceBuilder);
return restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
}
以下は、上記の Search メソッドを呼び出す方法です。
SearchResponse searchResponse = esDao.searchDocumentRequest("employees",
"{\"bool\":{\"must\":[{\"match\":{\"depID\":\"5656\"}}]}}");
SearchResponse searchResponse = esDao.searchDocumentRequest("employees",
"{\"bool\":{\"must\":[{\"match\":{\"depID\":\"6767\"}}]}}");
上記の呼び出しはどれもヒットを返しません! ただし、他のフィールドに対する以下の呼び出しは正しいヒットを返します。
SearchResponse searchResponse = esDao.searchDocumentRequest("employees",
"{\"bool\":{\"must\":[{\"match\":{\"employeeID\":\"7777\"}}]}}");
SearchResponse searchResponse = esDao.searchDocumentRequest("employees",
"{\"bool\":{\"must\":[{\"match\":{\"jobID\":\"2345\"}}]}}");
ここで何が間違っていますか?depID 検索でヒットが返されないのはなぜですか? どんなアドバイスでも大歓迎です
更新: ドキュメントのインデックス マッピングは次のようです。
{
"properties": {
"jobID": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"depID:": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"employeeID": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
}
}
}