#java #elasticsearch
#java #elasticsearch
Вопрос:
У меня есть определение индекса следующим образом
{
"mappings": {
"my_mapping1": {
"dynamic": false,
"_all": { "enabled": false },
"_source": { "enabled": false },
"properties": {
"my_property1": { "type": "long", "store": true },
}
},
"my_mapping2": {
query = QueryBuilders.matchQuery("my_property1", "123123");
Set<String> queryIndices = new HashSet<>();
queryIndices.add("my_index_name");
SearchResponse searchResponse = searchBuilder(SearchType.DFS_QUERY_THEN_FETCH, query, fields,
queryIndices.toArray(new String[queryIndices.size()]), params.getType())
.setSize(size)
.execute().actionGet();
Как мне указать, что я ищу my_mapping1
, а не my_mapping2
И последующий вопрос: имеет ли значение тип matchQuery, например, вместо string я должен запрашивать с помощью long object?
Комментарии:
1. какая-нибудь удача здесь??
Ответ №1:
Глядя на ваш исходный код, похоже, что вы не используете официальный java-высокоуровневый клиент rest (JHLRC), который доступен с версии 6.0
Пожалуйста, обратитесь к официальному API поискового запроса с использованием JHLRC, где в разделе необязательных аргументов объясняется, как передавать имена типов, в вашем случае my_mapping1
и my_mapping2
.
SearchRequest searchRequest = new SearchRequest("posts");
searchRequest.types("doc"); // here you need to pass your type name.