我目前正在开始使用Elasticsearch,我正在尝试构建一个搜索查询,在不同的字段中查找关键字,具体取决于文档类型。
示例:
索引名称:index1
文件类型:
- doc1(_id,名称,大小,颜色,重量)
- doc2(_id,名称,持续时间,长度,宽度,高度)
现在我想查询index1
类型为doc1
和doc2
的文档,但在doc1
我只想搜索name
列,{ {1}}和size
,而在weight
我希望在doc2
,name
和length
列中进行搜索。
如何在单个查询中实现此目的?
答案 0 :(得分:2)
您可以按类型和名称引用字段,并使用bool查询。一个基本的例子如下。
{
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"term": {
"doc1.name": {
"value": "2"
}
}
},
{
"term": {
"doc1.size": {
"value": "23"
}
}
},
{
"term": {
"doc1.weight": {
"value": "52"
}
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"doc2.name": {
"value": "2"
}
}
},
{
"term": {
"doc2.length": {
"value": "23"
}
}
},
{
"term": {
"doc2.height": {
"value": "52"
}
}
}
]
}
}
]
}
}
}