1、must和filter的區別。
可以簡單的理解為,filter有快取,must無快取。
如:
$conditions['bool']['must']
和
$conditions['bool']['filter']
2、針對文字型的查詢,使用match
match會進行分詞匹配。
如
$conditions['bool']['filter'] = ['match' => ['title' => ['query'=> $title , "operator"=>"and"]],];
意思是匹配所有$title的分詞。
比如$title是"2017夏季**",分詞可能會分為2017,夏季,**。
那麼如果operator的值是and,則表示,需要滿足所有條件的才會匹配。
比如"2017的夏季漂亮的**"
"2017的夏季流行的**和**"
"夏季唯美**,2017"
會匹配。
比如:"2017的夏季漂亮的**"就不會匹配。
因為沒有"**"這個分詞。
如果operator的值是or,則表示只需要滿足其中乙個分詞就會匹配。
$conditions['bool']['filter'] = ['term' => ['is_hot' => 1]],
匹配is_hot為1的資料
4、或搜尋。在elasticsearch中,或搜尋,就是should
如:二選一
$conditions['bool']['filter'] = [
'should' =>[
['term' => ['is_hot' => 1]],
['term' => ['is_online' => 1]],
],'minimum_number_should_match' => 1,
];
命中is_hot為1,或者is_online為1的情況。
5、範圍搜尋。range
如:
$conditions['bool']['filter'] = [
['range' => ['num' => ['gte' => 100],],], // 數量大於等於100
['range' => ['price' => ['gt' => 0],],], // **大於0
['range' => ['end_time' => ['gte' => date('y-m-d')],],], // 過期時間
['range' => ['start_time' => ['lte' => date('y-m-d h:i:s')]]],// 開始時間
];
6、全部湊一起後,準備好的用於elasticsearch查詢的json資料
}},
}},}},
}},
},},}],
"minimum_number_should_match": 1}},
}},}}
],"minimum_number_should_match": 1}}
]}
}
ElasticSearch基礎概念
es的index索引,document文件物件,副本,多節點集群等基礎知識 1 通俗的解釋 在elasticsearch中,文件歸屬於一種型別 type 而這些型別存在於索引 index 中,索引名稱必須是小寫 relational db database table row column elas...
Elasticsearch基礎概念
1 索引 索引 index 是elasticsearch存放具體資料的地方,是一類具有相似特徵的文件的集合。elasticsearch中索引的概念具有不同意思,這裡的索引相當於關聯式資料庫中的乙個資料庫例項。在elasticsearch中索引還可以作為動詞,表示對資料進行索引操作。2 型別 在6.0...
ElasticSearch基礎介紹
1 索引 索引 index 是elasticsearch存放具體資料的地方,是一類具有相似特徵的文件的集合。elasticsearch中索引的概念具有不同意思,這裡的索引相當於關聯式資料庫中的乙個資料庫例項。在elasticsearch中索引還可以作為動詞,表示對資料進行索引操作。2 型別 在6.0...