ES通配符模糊搜索不到

开源之夏第三届火热来袭,高校学生参与赢万元奖金!>>>

ES通配符模糊搜索不到

1.name是text类型,模糊搜索【张无】,搜索不到,但是模糊搜索【张】可以

2.代码如下

@Field(type = FieldType.Text)
String name;
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.size(10);
searchSourceBuilder.query(QueryBuilders.boolQuery().should(QueryBuilders.wildcardQuery("name.keyword", "*" + "张无" + "*")));
/*searchSourceBuilder.query(QueryBuilders.boolQuery()
        .must(QueryBuilders.wildcardQuery("sect.keyword","*峨嵋*"))
);*/
searchSourceBuilder.sort("age", SortOrder.DESC);
searchSourceBuilder.trackTotalHits(true);//索引所有数据总数
System.out.println("查询语句=====================" + searchSourceBuilder);
searchRequest.source(searchSourceBuilder);
SearchResponse response = restHighLevelClient().search(searchRequest, RequestOptions.DEFAULT);
System.out.println("查询结果=====================" + JSONObject.toJSON(response));

3.搜索结果

查询结果=====================》{"took":{"hours":0,"nanos":6000000,"minutes":0,"daysFrac":6.944444444444444E-8,"microsFrac":6000.0,"millisFrac":6.0,"seconds":0,"days":0,"micros":6000,"hoursFrac":1.6666666666666667E-6,"secondsFrac":0.006,"stringRep":"6ms","millis":6,"minutesFrac":1.0E-4},"timedOut":false,"shardFailures":[],"successfulShards":6,"totalShards":6,"failedShards":0,"internalResponse":{"fragment":true,"numReducePhases":1},"skippedShards":5,"hits":{"hits":[],"fragment":true,"totalHits":{"value":0,"relation":"EQUAL_TO"},"maxScore":null},"fragment":false,"profileResults":{},"clusters":{"fragment":true,"total":0,"skipped":0,"successful":0},"numReducePhases":1}

回答

name.keyword换成name,或者name给字段添加keyword属性 试试