查询 Elasticsearch JSON
Query Elasticsearch JSON
我正在尝试查询 elasticsearch 以找出使用特定产品购买了哪些产品。
我的数据从平面文件进入 logstash。
OrderNumber ProductName
order1 Chicken
order2 Banana
order3 Chicken
order1 Cucumber
order2 Chicken
order3 Apples
order1 Flour
order2 Rice
order3 Nuts
正如您在上面看到的,我有一个 产品名称 的 Chicken,它出现在不同的 Order Numbers.
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 以找出使用特定产品购买了哪些产品。
我的数据从平面文件进入 logstash。
OrderNumber ProductName
order1 Chicken
order2 Banana
order3 Chicken
order1 Cucumber
order2 Chicken
order3 Apples
order1 Flour
order2 Rice
order3 Nuts
正如您在上面看到的,我有一个 产品名称 的 Chicken,它出现在不同的 Order Numbers.
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"
}
}
}
]
}
}