Elasticsearch 為開(kāi)發(fā)者提供了強(qiáng)大的搜索功能。Elasticsearch 使用 DSL 來(lái)進(jìn)行查詢。對(duì)于很多從關(guān)系數(shù)據(jù)庫(kù)過(guò)來(lái)的人,這個(gè)很顯然不很適應(yīng)。雖然我們可以使用 SQL 來(lái)進(jìn)行查詢,但是我們必須通過(guò)一些命令來(lái)進(jìn)行轉(zhuǎn)換。我們可以通過(guò)閱讀文章:
-
Elasticsearch:Elasticsearch SQL介紹及實(shí)例 (一)
-
Elasticsearch:Elasticsearch SQL介紹及實(shí)例(二)
來(lái)了解更多。幸運(yùn)的是,目前 Elastic 在從事 ESQL 的研發(fā),并在不久的將來(lái)和開(kāi)發(fā)者見(jiàn)面。你可以閱讀文章 “Elasticsearch:ESQL 簡(jiǎn)介 — 一種用于靈活、迭代分析的新查詢語(yǔ)言”。
在今天的文章中,我來(lái)詳細(xì)介紹一下一個(gè)網(wǎng)絡(luò)上的工具。它可以幫助我們從人類語(yǔ)言的描述到 DSL 查詢的轉(zhuǎn)換。它的網(wǎng)址是?https://www.dsltranslate.com/。雖然我不知道它是如何實(shí)現(xiàn)的,但是從實(shí)現(xiàn)的方式上感覺(jué)非常像 ChatGPT。
示例一
找出最大值:
上面輸出的結(jié)果是:
{
"size": 0,
"aggs": {
"max_value": {
"max": {
"field": "_value"
}
}
}
}
我們?cè)谏厦娴妮斎肟蛑休斎胫形淖郑?/p>
?我們可以看到可以得到同樣的結(jié)果。
示例二
顯示所有價(jià)格從 100.000 USD 到 200.00 USD 的紅色汽車:
我們可以看到的結(jié)果是:
{
"query": {
"bool": {
"must": [
{ "match": { "color": "red" }},
{
"range" : {
"price" : {
"gte" : 100000,
"lte" : 200000
}
}
}
]
}
}
}
?我們嘗試使用中文來(lái)進(jìn)行操作:
從上面的輸出中,我們可以得到同樣的結(jié)果。
示例三
查找每個(gè)每個(gè)時(shí)間桶里的最大值及平均值:
上面的結(jié)果為:
{
"size": 0,
"aggs": {
"time_buckets": {
"date_histogram": {
"field": "timestamp",
"interval": "1h"
},
"aggs": {
"max_value": {
"max": {
"field": "value"
}
},
"avg_value": {
"avg": {
"field": "value"
}
}
}
}
}
}
示例三
在每個(gè)時(shí)間桶中找到前 3 個(gè)術(shù)語(yǔ):
上面顯示的結(jié)果為:
{
"size": 0,
"aggs": {
"time_buckets": {
"date_histogram": {
"field": "@timestamp",
"interval": "<time bucket>"
},
"aggs": {
"top_terms": {
"terms": {
"field": "<field>",
"size" : 3,
"order" : { "_count" : "desc"}
}
}
}
}
}
}
示例四
我們添加如下的 mapping:
{
"mappings": {
"properties": {
"date": {
"type": "date",
"format": "dateOptionalTime"
},
"visits": {
"type": "integer"
},
"max_time_spent": {
"type": "integer"
}
}
}
}
{
"size": 0,
"aggs": {
"monthly_visits": {
"date_histogram": {
"field": "date",
"interval": "month"
},
"aggs": {
"avg_visits": {
"avg": {"field" : "visits"}
}
}
} }
}
示例五
找出每個(gè)時(shí)間桶的前 3 個(gè)術(shù)語(yǔ)的百分比:
上面輸出的結(jié)果為:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-440156.html
{
"size": 0,
"aggs": {
"time_buckets": {
"date_histogram": {
"field": "date",
"interval" : "1h"
},
"aggs": {
"top_3_terms": {
"terms": {
"field": "_type",
"size" : 3,
"order" : { "_count" : "desc"} },
aggs: {
percentage: { bucket_script: { script: "_count * 100 / sum(total)", buckets_path: { total: "_count" } } } } } } } } }
?好了,今天我就展示到這里。你可以使用上面的工具做更多的試驗(yàn)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-440156.html
到了這里,關(guān)于Elasticsearch:人類語(yǔ)言到 Elasticsearch 查詢 DSL的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!