Solved! Go to Solution.
yufei, you can use renderer to render the whole feature layer, and use featureLayer.setDefinitionExpression(expression) to filter which subset of features will be displayed by their attribute data.
You can set the server behavior to return only 1000 records.
If you need to query the layer based on the attribute data and/or spatial features, having a graphics layer to render the found features can be one way to go.