(ElasticSearch)中文字符串精确搜索 term 搜不到结果
1、问题:搜索college为计算机学院的数据,原始数据中有,却搜不到结果,代码如下:
public static void termQuery(Client client, String index, String type) { // Query QueryBuilder queryBuilder = QueryBuilders.termQuery("college", "计算机学院"); // Search SearchRequestBuilder searchRequestBuilder = client.prepareSearch(index); searchRequestBuilder.setTypes(type); searchRequestBuilder.setQuery(queryBuilder); // 执行 SearchResponse searchResponse = searchRequestBuilder.execute().actionGet(); // 结果 queryResult(searchResponse); }
2、原因:elasticsearch 里默认的IK分词器是会将每一个中文都进行了分词的切割,所以你直接想查一整个词,或者一整句话是无返回结果的。
3、解决方法:QueryBuilder queryBuilder = QueryBuilders.termQuery("college.keyword", "计算机学院");
4、说明: .keyword 是不分词的意思