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的关键词搜索,上面的条件就都被忽略掉了…… 应该使用什么方法?

阅读 6.1k
1 个回答

你的索引里有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": {}
}

是得到结果了的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进