gpt4 book ai didi

elasticsearch - 从应用程序使用Kibana View 查询

转载 作者:行者123 更新时间:2023-12-02 23:08:15 25 4
gpt4 key购买 nike

我使用了以下过滤器,然后使用Lucene搜索查询字符串以获取所需的 View 。

{
"query": {
"match": {
"eventSource": {
"query": "ec2.amazonaws.com",
"type": "phrase"
}
}
}
}
我不想返回以describe或get开头的事件名称。应该返回来自ec2事件源的其余事件名称。

!(eventName.keyword: Describe* OR eventName.keyword:Get* )


问题是如何将这两个搜索请求合并为一个?
我需要在我的应用程序中使用该查询。

更新:
Kibana Discover选项卡的Inspect菜单会生成此查询。我只是想使用 bool(boolean) OR子句重写具有通常match或match_phrase的query_string部分。
  "query": {
"bool": {
"must": [
{
"query_string": {
"query": "!(eventName.keyword: Describe* OR eventName.keyword: Get* )",
"analyze_wildcard": true
}
},
{
"match_phrase": {
"eventSource": {
"query": "ec2.amazonaws.com"
}
}
},
{
"range": {
"@timestamp": {
"format": "strict_date_optional_time",
"gte": "2020-07-09T08:39:15.947Z",
"lte": "2020-07-24T08:39:15.947Z"
}
}
}
],
"filter": [],
"should": [],
"must_not": []
}
}

最佳答案

您可以轻松地使用boolean query的must_not子句来排除搜索结果中不需要的文档,并且可以根据需要添加任意数量的must_not,这很容易做到,并且可以在单个查询中完成。
请引用同一链接中的示例以获取更多信息。在我的本地创建的示例以显示正确的查询,请注意,我使用的不是wildcard,而是更好的prefix query,可以用作您的用例。
创建索引映射

{
"mappings": {
"properties": {
"eventName": {
"type": "keyword"
}
}
}
}
索引样本文档
{
"eventName" : "Describe the events"
}

{
"eventName" : "the Describe events"
}

{
"eventName" : "Get the event"
}

{
"eventName" : "event Get"
}
现在根据您的要求进行搜索查询,仅获取第2和第3个文档
{
"query": {
"bool": {
"must_not": [
{
"prefix": {
"eventName": "Desc"
}
},
{
"prefix": {
"eventName": "Get"
}
}
]
}
}
}
搜索结果
  "hits": [
{
"_index": "ngramkey",
"_type": "_doc",
"_id": "2",
"_score": 0.0,
"_source": {
"eventName": "the Describe events"
}
},
{
"_index": "ngramkey",
"_type": "_doc",
"_id": "4",
"_score": 0.0,
"_source": {
"eventName": "event Get"
}
}
]

关于elasticsearch - 从应用程序使用Kibana View 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63067660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com