2014-11-17 3 views
1

Я хочу искать документы в elasticsearch, которые имеют точно такие же поля, как и данный документ id docId. Напр. пользователь вызывает api с docId, я хочу фильтровать документы, чтобы все возвращаемые документы выполняли некоторые параметры в docId.Elasticsearch найти документы другим документом

Например я могу запросить Elasticsearch так:

POST similarTerms/_search 
{ 
    "fields": [ 
     "_id", "title" 
    ] , 
    "filter": { 
    "query": {"match": { 
     "title": doc[docId].title 
    }} 
    }, 
    "size": 30 

} 

Я знаю, что могу получить документ с DocId, а затем я могу подготовить выше запрос, но я могу избежать сети хмель как-то, как даже миллисекунды улучшение времени вызывает большое беспокойство для моего приложения.

Благодаря

+0

У меня есть точная проблема, которую вы имели, если есть способ fetch docId и использовать его для повторения в указанном выше вопросе, я могу решить мою проблему. Вы нашли способ получить docId и использовать его в своем запросе выше. Если бы вы могли, пожалуйста, поделитесь им со мной? –

ответ

0

Это учебник сценарий для «больше как это» апи. Цитата the docs:

Чем больше, как это (MLT) API позволяет получить документы, которые «вроде» указанного документа. Вот пример:

$ curl -XGET 'http://localhost:9200/twitter/tweet/1/_mlt?mlt_fields=tag,content&min_doc_freq=1'

API-интерфейс просто приводит в исполнение запроса поиска с moreLikeThis запроса HTTP (параметры соответствуют параметрам в more_like_this запроса). Это означает, что тело запроса может необязательно включать все параметры тела запроса в API поиска (aggs, from/to и так ). Внутри, как это похоже, этот API эквивалентен выполнению булевого запроса запросов more_like_this_field с одним запросом на , указанным mlt_fields.

Если вы планируете тестирования этого (как я сделал) с одним документом только для тестирования, убедитесь, что вы также установить min_term_freq=0 и min_doc_freq=0: GET /my_index/locations/1/_mlt?min_term_freq=0&min_doc_freq=0

+0

Могу ли я фильтровать больше, как на основе поиска документов? Могу ли я сказать, что возвращаю мне только документ, который имеет значение определенных полей точно так же, как значение передаваемого документа. –

Смежные вопросы