term
คำค้นหาตรงกับคำเดียวตามที่เป็นอยู่: ไม่มีการวิเคราะห์ค่า ดังนั้นจึงไม่จำเป็นต้องลดระดับขึ้นอยู่กับสิ่งที่คุณจัดทำดัชนีไว้
หากคุณระบุBennett
ในเวลาดัชนีและไม่มีการวิเคราะห์ค่าแบบสอบถามต่อไปนี้จะไม่ส่งคืนอะไรเลย:
{
"query": {
"term" : { "user" : "bennett" }
}
}
match_phrase
แบบสอบถามจะวิเคราะห์อินพุตหากมีการกำหนดตัววิเคราะห์สำหรับฟิลด์ที่สืบค้นและค้นหาเอกสารที่ตรงกับเกณฑ์ต่อไปนี้:
- คำศัพท์ทั้งหมดจะต้องปรากฏในฟิลด์
- ต้องมีลำดับเดียวกันกับค่าอินพุต
ตัวอย่างเช่นหากคุณจัดทำดัชนีเอกสารต่อไปนี้ (โดยใช้standard
ตัววิเคราะห์สำหรับฟิลด์foo
):
{ "foo":"I just said hello world" }
{ "foo":"Hello world" }
{ "foo":"World Hello" }
match_phrase
แบบสอบถามนี้จะส่งคืนเฉพาะเอกสารแรกและเอกสารที่สอง:
{
"query": {
"match_phrase": {
"foo": "Hello World"
}
}
}
query_string
โดยค่าเริ่มต้นการค้นหาบนฟิลด์_allซึ่งมีข้อความของช่องข้อความหลายช่องพร้อมกัน นอกจากนี้ยังมีการแยกวิเคราะห์และสนับสนุนตัวดำเนินการบางอย่าง (AND / OR ... ), สัญลักษณ์แทนและอื่น ๆ (ดูไวยากรณ์ที่เกี่ยวข้อง )
ในการmatch_phrase
ค้นหาข้อมูลจะถูกวิเคราะห์ตามตัววิเคราะห์ที่ตั้งค่าไว้ในฟิลด์ที่ถูกสอบถาม
ไม่เหมือนmatch_phrase
คำที่ได้รับหลังจากการวิเคราะห์ไม่จำเป็นต้องอยู่ในลำดับเดียวกันเว้นแต่ผู้ใช้จะใช้เครื่องหมายคำพูดรอบอินพุต
ตัวอย่างเช่นการใช้เอกสารเดิมแบบสอบถามนี้จะส่งคืนเอกสารทั้งหมด:
{
"query": {
"query_string": {
"query": "hello World"
}
}
}
แต่แบบสอบถามนี้จะส่งคืนเอกสาร 2 ชุดเดียวกันกับmatch_phrase
แบบสอบถาม:
{
"query": {
"query_string": {
"query": "\"Hello World\""
}
}
}
มีอะไรอีกมากมายที่จะพูดเกี่ยวกับตัวเลือกต่างๆสำหรับข้อความค้นหาเหล่านั้นโปรดดูเอกสารที่เกี่ยวข้อง:
หวังว่านี่จะชัดเจนเพียงพอและจะช่วยได้