Я в основном хотел бы искать запрос с 2 фильтрами / тегами
(e.g. 1 city in 2 countries - US OR CANADA)
ElasticSearchAPi.java
public interface ElasticSearchAPI {
@GET("_search/")
Call search(
@HeaderMap Map headers,
@Query("default_operator") String operator,
@Query("q") String query
);
}
Часть Search.java
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
ElasticSearchAPI searchAPI = retrofit.create(ElasticSearchAPI.class);
HashMap headerMap = new HashMap();
headerMap.put("Authorization", Credentials.basic("user", mElasticSearchPassword));
String searchString = "";
if (!mSearchText.equals("")){
searchString = searchString + mSearchText.getText().toString() + "*";
}
if (!mPrefCountry.equals("")){
searchString = searchString + " country:" + mPrefCountry;
}
Call call = searchAPI.search(headerMap, "AND", searchString);
call.enqueue(new Callback() {
@Override
public void onResponse(Call call, Response response) {
HitsList hitsList = new HitsList();
String jsonResponse = "";
try{
Log.d(TAG, "onResponse: server response: " + response.toString());
if (response.isSuccessful()){
hitsList = response.body().getHits();
}else{
jsonResponse = response.errorBody().string();
}
Log.d(TAG, "onResponse: hits: " + hitsList);
for(int i = 0; i call, Throwable t) {
Log.e(TAG, "onFailure: " + t.getMessage() );
Toast.makeText(getActivity(), "search failed", Toast.LENGTH_SHORT).show();
}
});
}
return false;
}
например код отображает запрос ff, который показывает доступные города с НОВЫЙ в названии внутри страны нас:
_search?default_operator=AND&q=new*+country:Us
но я пытаюсь добиться чего-то вроде этого:
_search?default_operator=AND&q=new*+country:Us||Canada
это должно привести к отображению всех городов с НОВЫЙ в названии внутри США ИЛИ КАНАДА.
но ||, похоже, не работает, поэтому я прошу правильный оператор Retrofit OR или что-то, что может помочь мне достичь моей цели.
@Shashanth, я добавил больше информации, надеюсь, это проясняет мой вопрос




Нашел ответ:
| означает операцию ИЛИ
Но он не работает в запросах, поэтому для достижения моей цели мне нужно превратить | в OR (с пробелами до и после)
_search?default_operator=AND&q=new*+country:(Us OR Canada)
Какой вопрос? С какой проблемой вы столкнулись с текущим кодом, размещенным здесь как минимальный воспроизводимый пример? Пожалуйста, дополните. А также образец URL-адреса, к которому вы пытаетесь получить доступ, может помочь понять проблему.