как использовать метод wildCardQuery с использованием JavaS API

1

Я индексирую такой документ:

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");

Я думаю, что есть проблема с анализаторами, когда я его индексирую. Является ли проблема пробелом, и если это так, как я могу ее исправить?

Теги:
elasticsearch

1 ответ

0
Лучший ответ

Я исправил его, и я могу использовать 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();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню