首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过Elasticserach查询DSL在Kibana中查找列表上的所有条目

通过Elasticserach查询DSL在Kibana中查找列表上的所有条目
EN

Stack Overflow用户
提问于 2021-07-14 16:46:46
回答 1查看 32关注 0票数 1

你能在这方面帮我一下吗?我在“发现”中的Kibana数据库包含一个交易列表。我知道要找到在这个数据库中的所有交易,已在特定的工具(ISIN-编号)。当我手动添加过滤器并切换到Elasticserach查询DSL时,我发现以下内容:

代码语言:javascript
运行
复制
{
  "query": {
    "bool": {
      "should": [
        {
          "match_phrase": {
            "obdetails.isin": "CH0253592783"
          }
        },
        {
          "match_phrase": {
            "obdetails.isin": "CH0315622966"
          }
        },
        {
          "match_phrase": {
            "obdetails.isin": "CH0357659488"
          }
        }
      ],
      "minimum_should_match": 1
    }
  }
}

因为我想检查200多个ISINS的数据库,这似乎是低效的。有没有一种方法,我可以只说“如果交易包含以下200个ISIN之一,就显示给我看?”

我已经在谷歌上搜索并尝试过了,但没有用:

代码语言:javascript
运行
复制
{
  "query": {
    "terms": {
      "obdetails.isin": [ "CH0357659488", "CH0315622966"],
      "boost": 1.0
    }
  }
}

查询可以工作,但不会显示任何结果。

EN

回答 1

Stack Overflow用户

发布于 2021-07-14 18:51:34

总结一下。分析类型为text的字段,它基本上使用给定的分析器将给定数据转换为术语列表,而不是单个术语。给定的行为会导致术语查询与这些值不匹配。

可以添加类型为keyword的附加字段,而不是更改字段的类型。这样,可以执行术语查询,同时仍然具有在字段上匹配的能力。

代码语言:javascript
运行
复制
{
  "isin": {
    "type" "text",
    "fields": {
      "keyword": {
        "type": "keyword",
        "ignore_above": 256
      }
    }
  }
}

上面的示例将添加一个名为obdetails.isin.keyword的额外字段,该字段可用于术语。同时仍然能够在obdetails.isin上使用匹配查询

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68374858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档