[英]Changing field properties
我正在使用packetbeat監視3306上的mysql端口,並且運行良好。 我可以輕松地在“發現”選項卡上搜索任何單詞。 例如
method:SET
這按預期工作。 但是如果我將其更改為
query:SET
那么它不會在查詢字段中返回帶有單詞“ SET”的文檔。 查詢字段的索引是否不同? 如何使“查詢”字段可搜索?
更新:
這是因為用於所有字符串字段的參數“ ignore_above”嗎? 我使用此API檢查了映射...
GET /packetbeat-2018.02.01/_mapping/mysql/
如何刪除此限制,並使所有將來的節奏都成為索引查詢字段?
更新2:
如果我在基於“查詢”字段的搜索中提及整個字符串,則它按預期工作...
query:"SELECT name, type, comment FROM mysql.proc WHERE name like 'residentDetails_get' and db <=> 'portal' ORDER BY name, type"
這將返回最近15分鍾內的所有688條記錄。 當我搜索以下內容時,我希望可以得到更多...
query:"SELECT"
但是我沒有得到任何記錄。 我猜這是因為文檔建立索引的方式。 我將更喜歡找回等效的SQL:像'%SELECT%'這樣的查詢
給定查詢和字段映射,這是正確的行為。 這與1024個限制無關。 您可以省略query:
part,以便Elasticsearch使用_all
字段(不久后將刪除),但這取決於您使用的Stack版本。
或者,更好,更正確的方法是在packetbeat模板中以不同的方式配置查詢字段(以便下一個索引將使用新的映射),如下所示:
"query": {
"type": "text",
"fields": {
"raw": {
"type": "keyword",
"ignore_above": 1024
}
}
}
主要思想是ES不會拆分查詢字段中的值(因為它是keyword
),因此您需要一種方法來做到這一點。 您可以使用通配符,但是ES不喜歡通配符(尤其是前導通配符),並且在運行此類查詢時可能會出現性能問題。 從ES的角度來看,“正確”的方法是我已經提到的方法:對字段進行分析,保留它的原始版本(用於排序和聚合),並保留它的簡單版本以進行搜索。
packetbeat的查詢字段被聲明為“關鍵字”。 因此,您只能搜索整個查詢。 例如
query: "select * from mytable"
但是,如果我們需要搜索查詢:“ mytable”怎么辦? 您需要通過修改fields.yml文件使查詢字段可搜索。 將type:text參數添加到/ etc / packetbeat中的fields.yml文件的MySQL部分的查詢字段中
文件的相關部分將如下所示:
- name: query
type: text
description: >
The query in a human readable format. For HTTP, it will typically be
something like `GET /users/_search?name=test`. For MySQL, it is
something like `SELECT id from users where name=test`.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.