首页 > Elasticsearch 怎么让模糊搜索和其他条件同时满足?

Elasticsearch 怎么让模糊搜索和其他条件同时满足?

QueryDSL如下:

{
    "query": {
        "bool": {
            "must": [
                {
                    "term": {
                        "category_id": "7"
                    }
                },
                {
                    "term": {
                        "enable": 1
                    }
                },
                {
                    "term": {
                        "status": 2
                    }
                },
                {
                    "range": {
                        "stock": {
                            "gt": 0
                        }
                    }
                },
                {
                    "match": {
                        "search_field": {
                            "query": "关键词",
                            "analyzer": "ik"
                        }
                    }
                }
            ]
        }
    },
    "size": 40,
    "from": 0
}

如果没有match,所有的条件都为AND,是没有问题的,问题是只要加上search_field的关键词搜索,上面的条件就都被忽略掉了…… 应该使用什么方法?


你的索引里有search_field这个字段么?
我结合我们的业务写了一个

{
    "query": {
        "bool": {
            "must": [
                {
                    "term": {
                        "allocation": "0"
                    }
                },
                {
                    "range": {
                        "order_id": {
                            "from": "0",
                            "to": "9999999999"
                        }
                    }
                },
                {
                    "match": {
                         "content" : {
                              "query" : "乘客离开",
                              "analyzer" : "ik"
                         }
                    }
                }
            ],
            "must_not": [],
            "should": []
        }
    },
    "from": 0,
    "size": 10,
    "sort": [],
    "facets": {}
}

是得到结果了的

【热门文章】
【热门文章】