Я индексирую такой документ:
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("name_surname", "Cristiano Ronaldo");
jsonObject1.accumulate("teams", "Sporting Lizbon");
jsonObject1.accumulate("teams", "Manchester United");
jsonObject1.accumulate("teams", "Real Madrid");
jsonObject1.put("2014 rank", 1);
client.prepareIndex("company", "employee", "1").setSource(jsonObject1.toString()).execute().actionGet();
Я могу найти его и получить удар с нижестоящим запросом:
QueryBuilder qb=QueryBuilders.matchQuery("2014 rank", 1);
SearchResponse searchResponse=client.prepareSearch().setQuery(qb).execute().actionGet();
Но wildCardQuery, похоже, не работает:
QueryBuilder qb = QueryBuilders.wildcardQuery("name_surname","*naldo");
Я думаю, что есть проблема с анализаторами, когда я его индексирую. Является ли проблема пробелом, и если это так, как я могу ее исправить?
Я исправил его, и я могу использовать wildCardQuery после того, как я рассмотрел этот вопрос.
Я использую настройки ниже, прежде чем индексировать свои документы.
Node node = nodeBuilder().client(true).settings(ImmutableSettings.settingsBuilder().loadFromSource(jsonBuilder()
.startObject()
.startObject("analysis")
.startObject("analyzer")
.startObject("steak")
.field("type", "custom")
.field("tokenizer", "standard")
.field("filter", new String[]{"snowball", "standard", "lowercase"})
.endObject()
.endObject()
.endObject()
.endObject().string())).clusterName("elasticsearch").node();