json - 查询Elasticsearch JSON

标签 json elasticsearch logstash elastic-stack

我试图查询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"
           }
         }
       }
    ]
  }
}

关于json - 查询Elasticsearch JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41806896/

相关文章:

json - 将 JSON URL 转换为 R 数据帧

elasticsearch - 如何在Elasticsearch中将multi_match与索引一起使用?

java - 使用elasticsearchTemplate从ElasticSearch获取所有文档

java - javax.json - 如何检查值是否是字符串

javascript - 如何从函数外返回JSONP调用的结果?

sql - 从 JSON postgres 数组中获取元素

elasticsearch - Elasticsearch 字符串过滤器-是否存在这样的选项?

java - 无法定位 logstash 的 java 安装错误

elasticsearch - Logstash经过的过滤器

logstash - 查找具有不同结构的文件的 grok 模式