es查詢-詞條檢索


可以使用term-level queries根據結構化數據中的精確值查找文檔。結構化數據的值包括日期范圍、IP地址、價格或產品ID。
與全文查詢不同,term-level queries不分析搜索詞。相反,詞條與存儲在字段級別中的術語完全匹配。

 

詞條搜索(term query)
term 查詢用於查詢指定字段包含某個詞項的文檔

POST /book/_search
{
"query": {
"term" : { "name" : "solr" }
}
}

詞條集合搜索(terms query)
terms 查詢用於查詢指定字段包含某些詞項的文檔

GET /book/_search
{
"query": {
"terms" : { "name" : ["solr", "elasticsearch"]}
}
}

范圍搜索(range query)
gte:大於等於
gt:大於
lte:小於等於
lt:小於
boost:查詢權重:在多條件組合查詢時,可以手動控制每個條件的比重

GET /book/_search
{
"query": {
"range" : {
"price" : {
"gte" : 10,
"lte" : 200,
"boost" : 2.0
}
}
}
}

GET book/_search
{
"query": {
"range" : {
"timestamp" : {
"gte": "18/08/2020",
"lte": "2021",
"format": "dd/MM/yyyy||yyyy"
}
}
}
}

不為空搜索(exists query)
查詢指定字段值不為空的文檔。相當 SQL 中的 column is not null

GET /book/_search
{
"query": {
"exists" : { "field" : "price" }
}
}

詞項前綴搜索(prefix query)
GET /book/_search
{ "query": {
"prefix" : { "name" : "so" }
}
}

正則搜索(regexp query)
regexp允許使用正則表達式進行term查詢.注意regexp如果使用不正確,會給服務器帶來很嚴重的性能壓力。比如.*
開頭的查詢,將會匹配所有的倒排索引中的關鍵字,這幾乎相當於全表掃描,會很慢。因此如果可以的話,最好在使
用正則前,加上匹配的前綴。

GET /book/_search
{
"query": {
"regexp":{
"name": "s.*"
}
}
}
GET /book/_search
{
"query": {
"regexp":{
"name":{
"value":"s.*",
"boost":1.2
 }
}
}
}

模糊搜索(fuzzy query)

GET /book/_search
{
"query": {
"fuzzy" : { "name" : "sol" }
}
}
GET /book/_search
{
"query": {
"fuzzy" : { "name" : "so" }
}
}


GET /book/_search
{
"query": {
"fuzzy" : {
"name" : {
"value": "so"
"fuzziness": 2
}
}
}
}


GET /book/_search
{
"query": {
"fuzzy" : {
"name" : {
"value": "sorl"
}
}
}
}


POST /book/_search
{
"query": {
"fuzzy": {
"name": {
"value": "osrl",
"fuzziness":2
}
 }
}
}

ids搜索(id集合查詢)
GET /book/_search
{
"query": {
"ids" : {
"values" : ["1", "3"]
}
}
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM