1. 結構化搜尋得到的結果只有是和否,沒有相似概念。
term可以實現精確值查詢
curl -xget 'localhost:9200/logstash-cowrie/_search?pretty
' -d '}}
}}'
因為term是非評分的,所以要用constant_score的方式將其轉化為過濾器。注意:如果沒有constant_score是會報錯的。
檢視字段是否可以用精確值查詢,可以通過analyze api。下面是例子,可以看到ip只有乙個token可以精確查詢。
curl -xget 'localhost:9200/test/_analyze?pretty
' -d ''
#結果 ]
}
設定字段具有精確值,如果想修改已有字段只能刪除後重新建立。例子:
delete /my_storeput /my_store }}
}}
組合過濾:
}
例子1:
curl -xget 'localhost:9200/test/_search?pretty
' -d '
},}],
"must
":}}}}
}}
}'
注意單個條件和多個條件的寫法。
單個條件,直接用{}
多個條件,用[{},{}]
注意:中的例子中用了filtered關鍵字,該關鍵字在新版es中已經被廢除了。
bool表示式的巢狀
src_ip=192.168.188.88 or (src_ip=1.2.3.4 and 2016-10-24<=time<2017-10-25)
curl -xget 'localhost:9200/test/_search?pretty
' -d '
}, },
}}]}}]}
}}
}}'
查詢多個精確值 terms
}
注意,term和terms表示包含,而不是相等
} 可以匹配下面兩個文件
如果想要完全一樣,必須用其他字段增加約束。
範圍range
"range":
}
日期範圍可以在日期上做運算
"range":
}
"range":
}
range
查詢同樣可以處理字串字段,
字串範圍可採用 字典順序(lexicographically) 或字母順序(alphabetically)。
"range":
}
數字和日期欄位的索引方式使高效地範圍計算成為可能。
但字串卻並非如此,要想對其使用範圍過濾,elasticsearch 實際上是在為範圍內的每個詞項都執行term
過濾器,這會比日期或數字的範圍過濾慢許多。
字串範圍在過濾 低基數(low cardinality) 字段(即只有少量唯一詞項)時可以正常工作,但是唯一詞項越多,字串範圍的計算會越慢。
存在查詢:exists
get /my_index/posts/_search}}}}
缺失查詢:missing
get /my_index/posts/_search}}}}
注意下面這個例子
}
查詢
}
實際執行的是
},}]}}
這也就意味著,如果first
和last
都是空,那麼name
這個命名空間才會被認為不存在。
結構化搜尋
結構化資料 結構化搜尋 structured search 是指對結構化資料的搜尋 期,布林型別和數字都是結構化的 本也可以是結構化的。如彩 筆可以有離散的顏 集合 紅 red 綠 green 藍 blue 個部落格可能被標記了標籤,例如,分布式 distributed 和 搜尋 search 電商...
ElasticSearch 結構化搜尋
結構化結果只能有 是 和 否 兩個值 根據場景需要,可以決定結構化搜尋是否需要打分 準備資料delete products post products bulk 對布林型的值做結構化的搜尋post products search 布林型的值做結構化的搜尋 跳過算分post products sear...
elasticsearch筆記 結構化搜尋 四
結構化搜尋 structured search 是指有關探詢具有內在結構資料的過程。比如日期 時間和數字都是結構化的 它們有精確的格式,我們可以對這些格式進行邏輯操作。比較常見的操作包括比較數字或時間的範圍,或判定兩個值的大小。注意 對於結構化文字來說,乙個值要麼相等,要麼不等.select doc...