Açıklaması şöyle.
Supports the compact Lucene query string syntax, allowing you to specify AND|OR|NOT conditions and multi-field search within a single query string. For expert users only.
Açıklaması şöyle
The query string is parsed into a series of terms and operators. A term can be a single word — quick or brown — or a phrase, surrounded by double quotes — "quick brown" — which searches for all the words in the phrase, in the same order.
Örnek
Bu örnekte AND|OR gibi boolean işlemler yapılmıyor. Aslında match sorgusu ile benzer şekildedir.
Elimizde şöyle bir sorgu olsun. Sıra (yani order) önemli olmadığı için tüm dokümanları döner.
{
"query": {
"query_string": {
"query": "hello World"
}
}
}
Ancak aynı sorgu şöyle olsun. Bu durumda tırnak kullanıldığından sıra önemli olur ve sonuç olarak sadece 1 ve 2. dokümanları alırız. 0. doküman sonuca dahil olmaz.
{
"query": {
"query_string": {
"query": "\"Hello World\""
}
}
}
Örnek
Bu örnekte AND|OR gibi boolean işlemler yapılmıyor. Aslında match sorgusu ile benzer şekildedir.
Çoklu alan sorgusu yapmak istersek şöyle yaparız. Burada aynı zamanda wildcard kullanılıyor
"query": {
"query_string": {
"query": "*mar*",
"fields": ["user.name", "user.surname"]
}
}
Elimizde şöyle bir kod olsun
Çıktı olarak şunu alırız. Burada AND işlemi için "must" kullanıldığı görülebilir.public interface ProductRepository extends ElasticsearchRepository<Product, String> {List<Product> findByName(String name);List<Product> findByNameContaining(String name);List<Product> findByManufacturerAndCategory (String manufacturer, String category);}
findByName() içinPOST /productindex/_search? ..:Request body: {.."query":{"bool":{"must":[{"query_string":{"query":"apple","fields":["name^1.0"],..}findByManufacturerAndCategory() içinPOST /productindex/_search..:Request body: {.."query":{"bool":{"must":[{"query_string":{"query":"samsung","fields":["manufacturer^1.0"],..}},{"query_string":{"query":"laptop","fields":["category^1.0"],..}}],..}},"version":true}
Hiç yorum yok:
Yorum Gönder