首页 > 解决方案 > ElasticSearch 多个单词多次包含和或在多个字段中

问题描述

我试图建立查询,我可以在多个字段中搜索。示例:1.《刑法》和《1999 年法令第 2 卷》和《人权法》 2.《人权法》或《劳动法》和《Chan Mia》

注意:引号内的字符串需要完全匹配。

我正在尝试以下查询:

   "query": {
                "multi_match" : {
                  "query":     "\"Criminal Law\"" or "\"Act 1999 Vol 2\"" and "\"Human Rights\"",
                  "fields":     [ "transcript" ],
                    "operator": "and"
                }
              }

标签: elasticsearch

解决方案


Multi_math 不支持查询文本中的运算符。您需要使用query_string


                "query_string" : {
                  "query":     "\"Criminal Law\"" OR "\"Act 1999 Vol 2\"" AND "\"Human Rights\"",
                  "fields":     [ "transcript" ]
                }
              }

Query_string 支持严格的语法。如果您的查询格式错误,它将引发错误。当输入直接来自用户时,这可能会产生问题。您可以使用simple_query_string它是容错的。尽管它不提供 query_string 的所有功能,但它不会为无效输入抛出错误。它将忽略查询的无效部分。


推荐阅读