elasticsearch - 为 Elastic Search 中的对象数组编写查询
问题描述
我正在尝试为以下输入(对象数组)编写查询。
"UserDetails": [
{ "Name" : "Vanaraj", "Age" : "27", "country" : "India" },
{ "Name" : "Ranjit", "Age" : "26", "country" : "US" }
]
Name、Age、Country 是三个不同的字段,它们的类型是文本。从前端,输入将像上面所有三个字段与数组的组合一样。
我需要用这三个组合编写一个查询,并根据所有三个字段及其值的组合从索引中过滤记录。“UserDetails”只是一个名称,我提到了仅存在于索引中的三个字段。
使用 {"Name" : "Vanaraj", "Age" : "27", "country" : "India"} 和 { "Name" : "Ranjit", "Age" : "26", "country" : "US" } 和输出应该与这些组合匹配。
解决方案
如果我正确理解您的问题,我相信您正在寻找这样的东西。
它看起来有点古怪,但大致翻译为:“找到我(Vanaraj,27 岁,在印度)或(Ranjit,26 岁,在美国)”
# Setup a sample index with data
PUT /stackoverflowtest/_doc/1
{ "Name" : "Vanaraj", "Age" : "27", "country" : "India" }
PUT /stackoverflowtest/_doc/2
{ "Name" : "Ranjit", "Age" : "26", "country" : "US" }
PUT /stackoverflowtest/_doc/3
{ "Name" : "Joe", "Age" : "38", "country" : "US" }
# Query that returns Vanaraj / 27 / India or Ranjit / 26 / US
POST /stackoverflowtest/_search
{
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"match": {
"Name": "Vanaraj"
}
},
{
"match": {
"Age": "27"
}
},
{
"match": {
"country": "India"
}
}
]
}
},
{
"bool": {
"must": [
{
"match": {
"Name": "Ranjit"
}
},
{
"match": {
"Age": "26"
}
},
{
"match": {
"country": "US"
}
}
]
}
}
]
}
}
}
推荐阅读
- javascript - selenium .sendKeys("text") 输入后文本消失
- ubuntu - 如何创建 ubuntu 快捷方式以在终端中打开节点
- python - 在 Python 中使用 Excel 文件作为 pandas 数据框的映射
- flutter - 在颤动中,我如何访问用户国家并存储到 Firestore
- javascript - 从 javascript 对象中查找最小的数字
- c++ - 将文本从文件读入数组时跳过整数
- scikit-learn - 查看 VowpalWabbit sklearn 模型的特征名称和权重
- reactjs - MUI 数据表删除行
- php - 为什么我有意外的语法 IF?
- apex - 尝试保存按钮时尝试取消引用 null 单击此错误触发触发