Тип ElasticsearchStatusException = parsing_Exception, причина = [_source] запрос неверен, после имени запроса нет start_JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Тип ElasticsearchStatusException = parsing_Exception, причина = [_source] запрос неверен, после имени запроса нет start_

Сообщение Anonymous »

Мой клиент Es

Код: Выделить всё

        
org.elasticsearch.client
elasticsearch-rest-high-level-client
7.5.0
type here
Строка DSL

Код: Выделить всё

{
"_source": ["parent", "title", "url"],
"query": {
"bool": {
"should": [
{
"match": {
"content": {
"query": "周武陵王",
"boost": 1
}
}
},
{
"match": {
"title": {
"query": "周武陵王",
"boost": 3
}
}
}
]
}
},
"size": 10
}
Java-код

Код: Выделить всё

    public SearchResponse searchByDsl(String index, String dslQuery) {
SearchRequest searchRequest = new SearchRequest(index);
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.wrapperQuery(dslQuery));
searchRequest.source(sourceBuilder);
SearchResponse response = null;
try {
response = highLevelClient.search(searchRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
throw new RuntimeException(e);
}
return response;
}
Запрос работает в Kibana, но не работает в приведенном выше коде.
Он выдает исключение:
"Исключение Elasticsearch [type=parsing_Exception, Reason=[ _source] запрос неверный, после имени запроса нет start_object]"
Я попробовал это, и это сработало.

Код: Выделить всё

public SearchResponse searchByKeyWord(String word){
SearchRequest searchRequest = new SearchRequest("myIndex");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.boolQuery()
.should(QueryBuilders.matchQuery("content", word).boost(1))
.should(QueryBuilders.matchQuery("title", word).boost(3))
);
searchSourceBuilder.size(1);
searchSourceBuilder.fetchSource(new String[]{"title", "content", "url"}, new String[]{});
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = null;
try {
searchResponse = highLevelClient.search(searchRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
log.error("search error", e);
}
return searchResponse;
}

Однако я хочу использовать DSL, а не QueryBuilders.matchQuery, так как мне нужно преобразовать множество запросов DSL из Python в Java.

Подробнее здесь: https://stackoverflow.com/questions/793 ... query-malf
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Тип ElasticsearchStatusException = parsing_Exception, причина = [_source] неверный запрос, нет start_object после имени
    Anonymous » » в форуме JAVA
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Сгенерированная ошибка сервлета: методы по умолчанию не поддерживаются в -source 1.5 (используйте -source 8 или выше, чт
    Anonymous » » в форуме JAVA
    0 Ответы
    48 Просмотры
    Последнее сообщение Anonymous
  • Преобразование кода Ruby-Source в код Java-Source
    Anonymous » » в форуме JAVA
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Джексон XML Parsing выбирает атрибут вместо тега
    Anonymous » » в форуме JAVA
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Файл фрагментов xml php parsing xml
    Anonymous » » в форуме Php
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»