我有一个看起来像这样的字符串查询


  {“ query”:{“ bool”:{“ should”:[{“ terms”:{“ user.id”:[#users_to_follow],“ minimum_match”:1}},{“ terms”:{“ tweets” :[#keywords_to_track],“ minimum_match”:1}}]}},“ filter”:{“ range”:{“ publishedDate”:{“ from”:#Unix_timestamp}}},“ size”:#sizelength}“


我正在尝试使用另一个字符串替换查询中的某些字符串:

query.replace("#users_to_follow",usersToFollow);
query.replace("#keywords_to_track", keyworsToTrack);
query.replace("#Unix_timestamp","1325930428000" );
query.replace("#sizelength",Integer.toString(SMLApplicationProperties.ES_RESULTSET_SIZE));


但是,当我运行该程序时,它实际上并不替换查询中给定的字符串。

最佳答案

您需要了解String类是不可变的。对String的任何操作都会返回一个新的String。您需要将其分配回查询变量:

query = query.replace("#users_to_follow",usersToFollow);
query = query.replace("#keywords_to_track", keyworsToTrack);
query = query.replace("#Unix_timestamp","1325930428000" );
query = query.replace("#sizelength",Integer.toString(SMLApplicationProperties.ES_RESULTSET_SIZE));

10-06 08:52
查看更多