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

查询Elasticsearch JSON

曹理
2023-03-14
问题内容

我试图查询elasticsearch以便找出使用某种产品购买了哪些产品。

我的数据从平面文件进入logstash。

 OrderNumber ProductName
    order1   Chicken    
    order2   Banana
    order3   Chicken   
    order1   Cucumber   
    order2   Chicken 
    order3   Apples
    order1   Flour
    order2   Rice
    order3   Nuts

如您在上面看到的,我有一个 鸡肉*产品名称 ,它以不同的 订单号出现 ***

 OrderNumber ProductName
    order1   Chicken          
    order3   Chicken
    order2   Chicken

这就是我想要实现的目标:

步骤1:查找所有包含鸡肉的订单号

 OrderNumber ProductName
    order1   Chicken          
    order3   Chicken
    order2   Chicken

第2步:如果上述订单中有鸡肉,请给我购买的所有其他产品

结果:

     OrderNumber   ProductName
     order1        Cucumber
     order2        Banana
     order3        Apples
     order1        Flour
     order2        Rice
     order3        Nuts

到目前为止,这是我为 Step1 所做的尝试:

询问

{
    "query" : {
        "match" : {
        "ProductName" : "Chicken"
}
    }
      }

结果

  "hits" : {
    "total" : 3,
    "max_score" : 11.378191,
    "hits" : [ {
      "_index" : "hello",
      "_type" : "logs",
      "_id" : "AVmxaChupyZuCjD89xPX",
      "_score" : 11.378191,
      "_source" : {
        "message" : "order1\Chicken\r",
        "path" : "C:\\utils\\Elk\\logstash\\bin\\product.log",
        "OrderNumber" : "order1",
        "ProductName" : "Chicken\r"
      }}, {
      "_index" : "hello",
      "_type" : "logs",
      "_id" : "AVmxaChupyZuCjD89xPX",
      "_score" : 11.378191,
      "_source" : {
        "message" : "order3\Chicken\r",
        "path" : "C:\\utils\\Elk\\logstash\\bin\\product.log",
        "OrderNumber" : "order3",
        "ProductName" : "Chicken\r"
      }
   }, {
      "_index" : "hello",
      "_type" : "logs",
      "_id" : "AVmxaChupyZuCjD89xPX",
      "_score" : 11.378191,
      "_source" : {
        "message" : "order2\Chicken\r",
        "path" : "C:\\utils\\Elk\\logstash\\bin\\product.log",
        "OrderNumber" : "order2",
        "ProductName" : "Chicken\r"
      }

我对如何完成 步骤2 感到非常困惑,因为我是Elasticsearch的新手,请帮忙?

谢谢


问题答案:

要搜索找到的订单号Chicken和商品名称不是的文档,Chicken可以使用以下查询:

{
  "query" : {
    "and" : [
       {
         "terms" : {
           "OrderNumber" : ["order1", "order2", "order3"]
         }
       },
       {
         "not" : {
           "term" : {
             "ProductName" : "Chicken"
           }
         }
       }
    ]
  }
}


 类似资料:
  • 问题内容: 我正在尝试使用Elasticsearch获得完全匹配的结果(所以我不在乎在这里得分) 我看到有两种方法可以做到这一点: 要么 两者都能工作,并给我想要的结果。它们之间有什么区别?使用一个与另一个相比有性能优势吗? (我正在使用Elasticsearch V 5.6) 谢谢 ! 问题答案: 恒定分数查询可为任何匹配的文档提供相等的分数,而与诸如等等的任何评分因素无关。当您不关心文档是否匹

  • Graphql 为查询而生,所以我们首先试试它的查询功能吧. 准备工作 克隆库: git clone https://github.com/zhouyuexie/learn-graphql 安装依赖: cd learn-graphql && npm install 运行: npm start 现在打开你的浏览器输入http://localhost:12580/graphql,或者点击这里. Gra

  • 说明 微信支付-订单附加信息查询接口SDK。 官方文档:https://pay.weixin.qq.com/wiki/doc/api/external/declarecustom.php?chapter=18_2 类 请求参数类 请求参数 类名:\Yurun\PaySDK\Weixin\CustomDeclareQuery\Request 属性 名称 类型 说明 $_apiMethod strin

  • 说明 支付宝报关查询 官方文档:https://docs.open.alipay.com/155/104780/ 类 请求参数类 请求参数 类名:\Yurun\PaySDK\AlipayCrossBorder\Customs\Submit\Request 属性 名称 类型 说明 $service string 接口名称 $out_request_no string 报关请求号 需要查询的商户端报关

  • 说明 支付宝境外在线支付-查询 官方文档:https://global.alipay.com/service/website_split_cn/13 类 请求参数类 请求参数 类名:\Yurun\PaySDK\AlipayCrossBorder\Online\Query\Request 属性 名称 类型 说明 $service string 接口名称 $trade_no string 支付宝根据商

  • 模型查询和数据库查询方法的区别主要在于,模型中的查询的数据在获取的时候会经过获取器的处理,以及更加对象化的获取方式。 模型查询除了使用自身的查询方法外,一样可以使用数据库的查询构造器,返回的都是模型对象实例。但如果直接调用查询对象的方法,IDE可能无法完成自动提示。 获取单个数据 获取单个数据的方法包括: // 取出主键为1的数据 $user = User::get(1); echo $user-

  • 基本查询 常规查询 要提交一个查询,使用 query 函数: $this->db->query('YOUR QUERY HERE'); 当你执行读类型的查询(如:SELECT)时,query() 函数将以**对象**形式 返回一个结果集,参考这里来 显示你的结果。 当你执行写类型的查询(如:INSERT、DELETE、UPDATE)时,函数将简单的返回 TRUE 或 FALSE 来表示操作是否成

  • 接口描述 审批单创建接口调用成功后,系统会生成一系列的临时用车规则,比如北京的送机、上海的接机、上海的市内用车等等。 通过审批单创建接口返回的审批单号调用该接口可以得到这些临时规则的详细信息,以便调起滴滴用车H5页 请求地址 https://api.es.xiaojukeji.com/river/Approval/detail 返回数据格式 JSON 请求类型 GET 请求参数 参数名称 数据类