elasticsearch - 使用不同字段上的AND和OR匹配Elasticsearch中的文档

标签 elasticsearch elasticsearch-query

我是 flex 搜索的新手,并且正在使用MySQL和MongoDB。我想编写查询,该查询给出了处于 Activity 状态的产品,并且其名称或brand_name或model_number或类别包含特定单词。

这是MySQL查询。
选择*从有效位置为0并且(名称为“%car%”或品牌名称为“%car%”或型号为LIKE“%car%”或类别为“%car%”的产品)中的产品;

我已经在 flex 搜索中尝试使用以下查询,但这只是AND运算符。

"query": {
        "bool": {
            "must": [
                {"match": {"active": "1"}},
                {"regexp": {"name": "cars.*"}},
                {"regexp": {"brand_data.brand_name": "cars.*"}},
                {"regexp": {"model_number": "cars.*"}},
            ]
        }
    }

谁能帮我在elasticsearch中编写此查询。

最佳答案

您正在寻找嵌套在“和”子句中的“或”。这是正确的格式:

"query": {
        "bool": {
            "must": [
                {"match": {"active": "1"}},
                {"bool":{"should":[
                {"regexp": {"name": "cars.*"}},
                {"regexp": {"brand_data.brand_name": "cars.*"}},
                {"regexp": {"model_number": "cars.*"}}]}}
            ]
        }
    }

关于elasticsearch - 使用不同字段上的AND和OR匹配Elasticsearch中的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59551972/

相关文章:

elasticsearch - 如何处理 Elasticsearch 索引中的空值

java - 我可以在 Kibana 中更改可视化的索引模式吗?

elasticsearch - Elasticsearch错误-未为[查询]注册任何查询

date - 在 Elasticsearch 中按日期获取上一个和下一个文档

javascript - 更新后的 Elasticsearch 查询返回旧的未更新文档

elasticsearch - 将两个单词作为一个单词进行加工

c# - ElasticSearch:使用NEST从动态条件列表中创建查询

elasticsearch - 无法在带有词条查询生成器的大写字母 Elasticsearch 中搜索文档。

elasticsearch - Elasticsearch:具有过滤器的查询是否会受到不在过滤器中的记录的相关性的影响?

elasticsearch - 如何在Grafana中实现完全匹配查询