Gorąco sugerujemy uaktualnienie wersja ElasticSearch jeśli to możliwe, nie było istotnych zmian od 0.9.x.
To pytanie nie jest wystarczająco szczegółowe, ponieważ ElasticSearch może spełniać wiele funkcji, które różnią się nieznacznie od ogólnego celu. Jeśli chcesz dokładnie powielić to zapytanie SQL, w tym przypadku użyj kwerendy lub kwerendy z symbolem wieloznacznym.
Korzystanie wildcard zapytanie:
UWAGA: Należy uważać z wyszukiwań wieloznacznych, są powolne. Unikaj używania symboli wieloznacznych na początku strun.
GET /my_index/table_name/_search
{
"query": {
"wildcard": {
"field_name": "a*"
}
}
}
Albo Prefix query
GET /my_index/table_name/_search
{
"query": {
"prefix": {
"field_name": "a"
}
}
}
Albo partial matching:
Uwaga: NIE ślepo stosować częściowe dopasowanie, natomiast istnieją przypadki narożne dla jego wykorzystania, prawidłowe użycie analizatorów jest prawie zawsze lepszy.
Również to dokładne zapytanie będzie równoznaczne z LIKE '%a%'
, co może być lepszym rozwiązaniem przy użyciu mapowania i normalnego wyszukiwania zapytań!
GET /my_index/table_name/_search
{
"query": {
"match_phrase": {
"field_name": "a"
}
}
}
Jeśli czytasz ten zastanawiać zapytań ES podobnie do szukania-as-you-type Sugerowałbym czytania na edge-ngrams, które odnoszą się do właściwego korzystania z mapowania w zależności od tego, co próbują zrobić =)
0.90.7 jest bardzo (bardzo) starą wersją ES. Proponuję użyć najnowszej wersji. –
Należy również zapoznać się z [dokumentacją] (https://www.elastic.co/guide/en/elasticsearch/guide/current/partial-matching.html)! Obejmuje wiele przypadków użycia i oferuje różne rozwiązania tego, czego potrzebujesz. –