Elasticsearch : IN operator query with query_string

标签 elasticsearch

我想将记录与查询字符串进行匹配,因此我编写了以下运行良好的查询:

{
  "query": {
    "query_string": {
      "fields": ["rollno","name"],
        "query": "*John*"
      }
  }
}

现在,除了匹配字段之外,我还想对另一个字段实现IN查询。我试过this查询,如:

{
"query": {
    "query_string": {
        "fields": ["rollno", "name"],
        "query": "*John*"
    },
    "match": {
        "majorSubject": ["Biology", "Chemistry"]
    }
  }
}

我得到的只是search_parse_exception

如何进行IN操作?

最佳答案

您需要使用 bool/must 查询才能组合两个子查询:

{
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "fields": [
              "rollno",
              "name"
            ],
            "query": "*John*"
          }
        },
        {
          "terms": {
            "majorSubject": [
              "Biology",
              "Chemistry"
            ]
          }
        }
      ]
    }
  }
}

如果 majorSubject 字段是经过分析的字符串,请改用小写术语:

{
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "fields": [
              "rollno",
              "name"
            ],
            "query": "*John*"
          }
        },
        {
          "terms": {
            "majorSubject": [
              "biology",
              "chemistry"
            ]
          }
        }
      ]
    }
  }
}

关于 Elasticsearch : IN operator query with query_string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44970878/

相关文章:

elasticsearch - 在同一台计算机上运行的ElasticSearch单独实例

Elasticsearch--重新索引到相同的索引名称

elasticsearch - ElasticSearch:如何在ElasticSearch中使用IN等效运算符

java - 如何使用Java在一个线程中在elasticsearch中插入和搜索?

angularjs - 使用 docker 的 Elasticsearch 无法启动

elasticsearch - 不用curl直接删除所有elasticsearch索引

elasticsearch - 弹性汇总以确定期间A与B的百分比增加

elasticsearch - 如何在Kibana中搜索带有特殊字符的单词-Elasticsearch

python - Elasticsearch-Python-具有刷新功能的批量助手API

node.js - 具有mongoosastic的Elasticsearch查询