term
kueri cocok dengan satu istilah sebagaimana adanya: nilai tidak dianalisis . Jadi, tidak harus dalam huruf kecil tergantung pada apa yang telah Anda indeks.
Jika Anda memberikan Bennett
pada waktu indeks dan nilainya tidak dianalisis, kueri berikut tidak akan mengembalikan apa pun:
{
"query": {
"term" : { "user" : "bennett" }
}
}
match_phrase
query akan menganalisis masukan jika penganalisis ditentukan untuk bidang yang ditanyakan dan menemukan dokumen yang cocok dengan kriteria berikut:
- semua istilah harus muncul di lapangan
- mereka harus memiliki urutan yang sama dengan nilai masukan
Misalnya, jika Anda mengindeks dokumen berikut (menggunakan standard
penganalisis untuk bidang tersebut foo
):
{ "foo":"I just said hello world" }
{ "foo":"Hello world" }
{ "foo":"World Hello" }
Ini match_phrase
permintaan hanya akan mengembalikan dokumen pertama dan kedua:
{
"query": {
"match_phrase": {
"foo": "Hello World"
}
}
}
query_string
pencarian kueri, secara default, pada bidang _all yang berisi teks dari beberapa bidang teks sekaligus. Selain itu, ini diurai dan mendukung beberapa operator (AND / OR ...), wildcard, dan seterusnya (lihat sintaks terkait ).
Sebagai match_phrase
kueri, masukan dianalisis sesuai dengan set penganalisis di bidang kueri.
Berbeda dengan match_phrase
, istilah yang diperoleh setelah analisis tidak harus berada dalam urutan yang sama, kecuali pengguna telah menggunakan tanda kutip di sekitar input.
Misalnya, menggunakan dokumen yang sama seperti sebelumnya, kueri ini akan mengembalikan semua dokumen:
{
"query": {
"query_string": {
"query": "hello World"
}
}
}
Tapi kueri ini akan mengembalikan 2 dokumen yang sama dengan match_phrase
kueri:
{
"query": {
"query_string": {
"query": "\"Hello World\""
}
}
}
Masih banyak lagi yang bisa dikatakan tentang opsi yang berbeda untuk kueri tersebut, silakan lihat dokumentasi terkait:
Semoga ini cukup jelas dan ini akan membantu.