As mentioned in the comments, you should use binary representation of numbers. Let's start with fewer bottles, say $6$. We can write the binary numbers for the labels as $001$, $010$, $011$, $100$, $101$, $110$. Now let's assign a tester for each bit. For example, tester 1 will check the last bit, tester 2 will check the next to last and so on. What does it mean to check the bit? In this case, prepare a drink for tester 1 that contains a mixture of all the drinks where the last digit in the label is $1$. For tester 2, the mixture contains all the wines where the digit next to last is $1$. And so on.
$$\begin{array}{c|c|c|c|c}
Nr&Label& Tester\ 3 & Tester\ 2 & Tester\ 1 \\ \hline
1& 001& 0&0 &1\\ \hline
2& 010& 0 &1 &0\\ \hline
3& 011& 0 &1 &1\\\hline
4& 100&1&0&0\\\hline
5& 101&1&0&1\\\hline
6& 110&1&1&0
\end{array}$$
You can see now that if a tester detects poison, the label must have the corresponding digit equal to $1$. If a tester does not detect poison, the corresponding digit on the label is $0$. Then you just need to see which tester detects the poison. For example, if tester 1 and 3 detect poison, the bottle with the problem is number 5.
To get more bottles just extend the numbers of testers. Show that you need 10 for 1000 bottles.