最近使用ES做项目,使用的过程中发现ES返回的结果是错误的,这个问题肯定不是ES本身的问题,他作为一个成熟的框架是不可能犯这些小错误的,于是我就想问题是出在了我自己身上,但是代码中根本不报错。
后来发现原因出在了setSource()
上面 它和setQuery
的顺序决定了结果返回的正确性,我猜想这个SearchBuilder是使用了建造者模式,建造的顺序不能混乱,因此写代码的时候一定要注意
SearchResponse response = client.prepareSearch( index ).addSort(FieldSortBuilder.DOC_FIELD_NAME, SortOrder.ASC)
.setSource(source)
.setQuery(qb)
.setSize(100).get();
这个顺序是没问题的,好吧,这个坑有点深