== Поиск на dynamic.lessmore.pw
Как это ваще устроено??? На самом деле [API](https://dynamic.lessmore.pw/search) -- это открытый всем Elasticsearch, который предоставляет
гору возможностей для поиска за счет движка Lucene. Давайте что-нибудь найдем!
Вот в [этом](ii://XWShDDcuR4C8PcrTFdGl) вот комменте я пообещал рассказать как это все сделать. Приступим.
Давайте для начала попробуем поискать этот самый коммент(XWShDDcuR4C8PcrTFdGl). Здесь и далее мы будем использовать только
*curl*.
curl -XPOST -d '{"query": {"query_string" : {"fields" : ["msgid"], "query" :"XWShDDcuR4C8PcrTFdGl"}}}' https://dynamic.lessmore.pw/search
Нам вернется такой вот ответ
{ "took": 2, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": 1, "max_score": 8.316952, "hits": [ { "_index": "idec_net", "_type": "post", "_id": "XWShDDcuR4C8PcrTFdGl", "_score": 8.316952, "_source": { "echo": "idec.talks", "subg": "Re: Совет нодов", "to": "Peter", "author": "Difrex(mobile)", "message": "\nПостараюсь завтра написать пост с обзором в ii://develop.16. Ну, и ссылку в этот тред скину.", "date": "1513020107", "msgid": "XWShDDcuR4C8PcrTFdGl", "tags": "", "repto": "h97Frgqdtapl4AI11aUj", "address": "tavern,23" } } ] } }Вот и он!
Нам вернулось одно сообщение, что не удивительно, т.к. ID в сети уникальны, а мы искали именно по нему.
А теперь давайте выведем все последние(5) сообщения(по дате) из эхи *idec.talks*:
curl -XPOST -d '{"sort": [{"date": {"order": "desc"}}, {"_score": {"order": "desc" }}], "size": 5}' https://dynamic.lessmore.pw/search -H 'Content-type: application/json' { "took": 2, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 } ...
Смотрите, тут мы отсортировали(на стороне сервера) сообщения по дате в порядке убывания и ограничили лимит в 5 сообщений.
Попробуйте перевести это на SQL(====select * from idec.talks order by date desc limit 5====).
А теперь выполним более сложный поиск: мы найдем сообщения по строке! Т.е. выполним полнотекстовый поиск!
Запрос будет выглядеть так:
{ "sort": [ { "date": { "order": "desc" } }, { "_score": { "order": "desc" } } ], "query": { "simple_query_string": { "query": "обзор" } }, "size": 5 }Отправляем его POST-ом в https://dynamic.lessmore.pw/search.
В ответ нам на это вернется список из 5 сообщений отсортированных по дате, где найдены вхождения слова "обзор".
Кстати, верхнее сообщение(b2rhH6sOfzEzgGZzLT51(на данный момент)) из эхи habra.16 и с заголовком
"Обзор литературы по языку Python для начинающих".
Вот так вот. Чтобы делать более лучшие вещи читайте документацию(query DSL) по Elasticsearch.
// Да, если вашей эхи нет в индексе, то убедитесь, что она есть в list.txt