elasticsearch查询中文时,返回结果为空

如下图所示,elasticsearch配置的时IK中文分词,可以确定分词没问题。这是分词效果:
图片说明

索引中也有相关的数据文档:

图片说明

但是查询"湖北"的时候,查询返回结果为空:
图片说明

即使将"湖北"换成"湖",也是一样,返回结果始终为空,但是查询英文就是正常的。

这到底是什么原因呢?求解~

5个回答

elasticsearch 在查询中文时,已将每一个中文进行了分词的切割。所以,如果你要查询“湖北”时,就需要把query分成2部分,然后再组合在一起,
"query" : {
"bool" : {
"must" : {
"term" : {
"message" : "湖"
}
},
"must" : {
"term" : {
"message" : "北"
}
}
}
}

su_ruoruo
su_ruoruo 回复qq_35280509: 真的有用,好吧,原理这么简单
3 年多之前 回复
qq_35280509
qq_35280509 代码如下: http://blog.csdn.net/qq_35280509/article/details/51637726
3 年多之前 回复

我要搜索计算机学院:

 BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
        boolQueryBuilder.must(QueryBuilders.termQuery("college","计"));
        boolQueryBuilder.must(QueryBuilders.termQuery("college","算"));
        boolQueryBuilder.must(QueryBuilders.termQuery("college","机"));
        boolQueryBuilder.must(QueryBuilders.termQuery("college","学"));
        boolQueryBuilder.must(QueryBuilders.termQuery("college","院"));

这样感觉太麻烦了,不知道如何处理?

可以试试 QueryBuilders.matchPhraseQuery,并且字段索引要设置不分词成 "index": "not_analyzed"

可能是编码问题,中文需要进行 utf-8 处理再提交

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!