Aktywne Wpisy

dziobnij2 +19
Jestem #przegrywpo30tce Poszedłem sobie, jak zwykle, do maczka na kawę. Na sali zauważyłem, że młoda dziewczyna i młody chłopak siedzieli przy jednym stoliku. Siadłem bezpośrednio obok nich, przy stoliku obok, aby posłuchać o czym gadają. Przez kilka minut jedli, a po chwili zaczęli rozmawiać o życiu, o pracy, o tym, że mają ciężko. Zwykłe tematy. Ja mam 34 lata i przez 34 lata nigdy nie rozmawiałem w ten sposób z
źródło: images
Pobierz
wscieklizna_irl +25
źródło: temp_file7076781051226631113
Pobierz




Zacząłem bawić się tym silnikiem.
Zindeksowałem sobie jakąś tabelę.
Mam zapytanie SQL, które pobiera rekordy z tej tabeli - teraz chciałbym podmienić silnik i podłożyć elastica.
Czy jest jakiś sprytny sposób, żeby SQLowego WHERE sparsować do elasticowego query?
Jakaś biblioteka, może coś innego?
Każde zapytanie dostosowywać do Elastica w przypadku dużego systemu to będzie koszmar.
Macie jakieś wskazówki, jak to zrobić łatwiej?
Dodam, że akcja dzieje się w #php.
Miejsc nie będzie dużo: szybkie wyszukiwanie ajaxowe i globalna szukarka.
No chyba, że ten duży system został napisany tak, że jest kilkanaście różnych miejsc, w których robione (i szukane) jest dokładnie to samo?
Twoje rozwiązanie jest fajne, jak jest jedno miejsce to poprawy - ja mam niestety mniej komfortową sytuację :/
Jest jedna funkcja/metoda, która wykonuje te szukania (w sensie wykonywania zapytań do bazy) i jesteś w stanie ją zmienić?
Czy nazwy szukających funkcji mają stały fragment?
W ogóle ma sens przez elastica szukać po czymś innym, niż tekst? Daty, przedziały liczbowe itp? Czy to się raczej nie sprawdzi?
Tak więc, jeśli nazwy tych kilkudziesięciu szukających funkcji są ze sobą związane jakimś słowem ("szukaj", "search", itd), to przy pomocy debug_backtrace określasz źródło zapytania i jeśli znajdzie się tam odpowiednie słowo, to parsujesz zapytanie, wyciągasz where (.*) (z pominięciem order/group/limit) i wyciągasz kolumny zindeksowane przez elastic search. Wrzucasz do elastica pytanie o id dokumentów, sklejasz
Załóżmy, że mam zapytanie SQL w stylu:
SELECT * FROM tabela WHERE a = 1 AND b = 2 AND (c = 3 OR c = 4) AND d=5 AND e IN (6,7,8) AND f > 20 AND f<40Jak to teraz ubrać
Jak nie spróbujesz, to nie przekonasz się co będzie najlepsze. Dla takich liczbowych, to sam indeks z mysqla powinien spokojnie wystarczyć (nałożony oczywiście na odpowiednie kolumny).