【问题标题】:Query Elasticsearch JSON查询 Elasticsearch JSON
【发布时间】:2017-06-07 23:52:57
【问题描述】:

我正在尝试查询 elasticsearch,以了解使用特定产品购买了哪些产品。

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

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

正如您在上面看到的,我有一个 产品名称 Chicken,它出现在不同的订单号中。

 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 的新手,请帮忙?

谢谢

【问题讨论】:

    标签: json elasticsearch logstash elastic-stack


    【解决方案1】:

    要搜索包含Chicken 的订单号和Chicken 以外的产品名称的文档,您可以使用以下查询:

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

    【讨论】:

    • @khachick,谢谢
    猜你喜欢
    • 2018-11-14
    • 2021-12-03
    • 2018-10-04
    • 1970-01-01
    • 2014-11-20
    • 2023-02-13
    • 1970-01-01
    • 2021-04-10
    • 2017-12-15
    相关资源
    最近更新 更多