elasticsearch,Java,Sorting,elasticsearch" /> elasticsearch,Java,Sorting,elasticsearch" />

Java 为什么elasticSearch中的排序不能正确排序数据?

Java 为什么elasticSearch中的排序不能正确排序数据?,java,sorting,elasticsearch,Java,Sorting,elasticsearch,第一个问题:-我有大约45000的数据。 我想对chrom和pos键上的数据进行排序。我编写了查询来对如下所示的数据进行排序 //The below script sort the chromosomes SortBuilder builder=new ScriptSortBuilder("s = doc['chrom'].value; s=s.substring(3); s.indexOf('X')!=-1?23:s.indexOf('Y')!=-1?24:s.indexOf('

第一个问题:-我有大约45000的数据。 我想对chrom和pos键上的数据进行排序。我编写了查询来对如下所示的数据进行排序

   //The below script sort the chromosomes 
   SortBuilder builder=new ScriptSortBuilder("s = doc['chrom'].value; s=s.substring(3); s.indexOf('X')!=-1?23:s.indexOf('Y')!=-1?24:s.indexOf('MT')!=-1?25:s.indexOf('M')!=-1?25:s;" +
                    "n = org.elasticsearch.common.primitives.Ints.tryParse(s); if (n != null) { String.format(\"%010d\",n)} else { s }", String.class.getSimpleName().toLowerCase());
   SearchRequestBuilder setQuery = this.getClient().prepareSearch(this.getIndex()).setTypes(this.getType())
                    .addSort(builder)
                    .addSort(Keys.POS.toLowerCase(),SortOrder.ASC).
                    setQuery(QueryBuilders.matchQuery(Keys.SAMPLE_ID_DB_KEY, entityID.toLowerCase())).setSize(100).setSearchType(SearchType.QUERY_AND_FETCH).setScroll(new TimeValue(60000000));
然而,在启动查询后,我收到了多个数据束。其中束被排序,但与其他束中的数据无关(即,如果第一束中存在1:11111的条目,则第二束中可能存在值小于1:11111的条目)

我错过什么了吗

第二个问题:-当我没有在查询中指定大小时,它不会返回所有45000个条目。为什么会这样

编辑
JSON格式的数据

{
  "chrom": "chr1",
  "pos": 762273,
  "isIndel": false,
  "interpretation": "",
  "sampleID": "xyz",
  "isSignedOff": false,
  "ownerID": null,
  "entityType": 0
}

切换到
SearchType.QUERY\u然后\u FETCH
而不是
SearchType.QUERY\u和\u FETCH

你能为你的问题添加一些测试数据和映射吗?@imotov:我已经添加了测试数据。你能解释一下这两者的区别吗?@SachinPasalkar-see