问题原因:es索引是分片存储的,查询计算评分的时候,是每个分片单独计算的,所以会出现相同名称的人员评分不同的问题、
解决方案:
1、与产品沟通,当数据量足够大时,每个分片数据近似相同,则各个分片计算出来的评分会很相近
2、查询的时候增加查询条件(dfs_query_then_fetch),不让各个分片单独计算得分,而是统一计算,这样会有一定的性能影响,官方文档也不建议这么做https://www.elastic.co/guide/en/elasticsearch/guide/2.x/relevance-is-broken.html
searchRequest.searchType("dfs_query_then_fetch");
PUT /test2
{
"settings": {
"number_of_shards": 5,
"number_of_replicas": 1
},
"mappings": {
"test2": {
"dynamic_templates": [
{
"notanalyzed": {
"match": "*",
"match_mapping_type": "string",
"mapping": {
"type": "