簡體   English   中英

使用Elasticsearch,如何對文檔屬性和嵌套文檔屬性進行過濾查詢?

[英]Using Elasticsearch, how do I do a filtered query on both my document properties and nested document properties?

這是示例文檔來源。

{
     "tags": [
         "meow",
         "cats",
         "feline"
    ],
    "visible": 1,
    "for_sale": "y",
    "title": "Cat Meow",
    "stock": [{
        "department": "mens",
        "size": "small"
    }, {
        "department": "mens",
        "size": "medium"
    }]
}

我想查找文檔為'stock.department = mens'和'stock.size = medium'並且也為'for_sale = y'

這是到目前為止我提出的查詢。 我不知道如何通過for_sale = y進行過濾。

{
    "size": 5,
    "query": {
        "filtered": {
            "query": {
                "multi_match": {
                    "fields": ["title", "tags"],
                    "query": "cat"
                }
            },
            "filter": {
                "nested": {
                    "path": "stock",
                    "filter": {
                        "bool": {
                            "must": [{
                                "term": {
                                    "stock.size": "medium"
                                }
                            }, {
                                "term": {
                                    "stock.department": "mens"
                                }
                            }]
                        }
                    }
                }
            }
        }
    }
}

這就是我想出的。 如果有人有任何批評或改進,請分享。

{
    "size": 5,
    "query": {
        "filtered": {
            "query": {
                "multi_match": {
                    "fields": ["title", "tags"],
                    "query": "cat"
                }
            },
            "filter": {
                "bool": {
                    "must": [{
                        "term": {
                            "for_sale": "y"
                        }
                    }, {
                        "term": {
                            "visible": 1
                        }
                    }, {
                        "nested": {
                            "path": "stock",
                            "filter": {
                                "bool": {
                                    "must": [{
                                        "term": {
                                            "stock.size": "medium"
                                        }
                                    }, {
                                        "term": {
                                            "stock.department": "mens"
                                        }
                                    }]
                                }
                            }
                        }
                    }]
                }
            }
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM