当前位置: 首页 > 面试题库 >

字段之间的elasticsearch比较

西门飞星
2023-03-14
问题内容

假设我有包含以下字段的文档: {field1, field2, ... fieldn}

我需要运行一些查询,其中某些条件将需要在两个或多个字段之间进行比较。喜欢fieldX = fieldY

在标准SQL中,一个示例可能是:

SELECT * FROM Table1 WHERE farePrice>100 AND originRegion = destinationRegion

我正在阅读一些文档,看起来“脚本”可能是实现此目的的唯一方法?还是还有其他选择?


问题答案:

您可以使用脚本过滤器-

{
  "filtered": {
    "query": {
      "range": {
        "farePrice": {
          "gt": 100
        }
      }
    },
    "filter": {
      "script": {
        "script": "doc['originRegion'].value ==  doc['destinationRegion'].value"
      }
    }
  }
}

您可以在此处和此处找到更多信息。



 类似资料:
  • 我在ElasticSearch中有一个索引,其中包含日期类型的两个字段(metricsTime 但是,在导航到Kibana的Discover选项卡时,我得到了以下错误消息:class_cast_exception:无法对类型[org . joda . time . mutable datetime]和[org . joda . time . mutable datetime]应用[-]操作。这看起

  • 我有两个对象数组:

  • 我一直在阅读这两个关于属性和字段的文档: https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html https://www.elastic.co/guide/en/elasticsearch/reference/current/properties.html 我理解具体文档中描述的每个属性的用

  • 我目前正试图理解字段之间的差异(https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html)和属性(https://www.elastic.co/guide/en/elasticsearch/reference/current/properties.html). 它们都以某种方式定义为类型/映射

  • 我知道可以使用,现在不推荐使用。类似于咆哮的代码: 另外,也许可以将手动脚本写成字符串,但我怀疑这是否是正确的解决方案。任何创建正确查询的想法都将受到欢迎。

  • 我在Elasticsearch中存储了一个日志文件,其中一个文档是文件的单行。消息块以某些关键字开始和结束。我想获取包含这些关键字的文档之间的所有文档。有没有办法利用Elasticsearch中的范围查询/范围过滤器来查询文本字段? 示例日志文件: 。。 我想查询“关键字1”和“关键字2”之间的所有文档,包括包含关键字本身的文档。假设有多个这样的块具有“关键字1”和“关键字2”。 此外,我正在用一