我索引这样的文档:

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");
我认为分析器在索引时存在问题。空格是问题吗,如果是我该如何解决?

最佳答案

我修复了它,检查了this问题后可以使用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();

10-08 19:36