ES 學習4 結構化搜尋

2021-09-07 11:54:08 字數 2236 閱讀 3554

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_store 

put /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}}

}}

注意下面這個例子

}

查詢

}

實際執行的是

},}]

}}

這也就意味著,如果firstlast都是空,那麼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...