elasticsearch - 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"
}
}
解决方案
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 的所有功能,但它不会为无效输入抛出错误。它将忽略查询的无效部分。
推荐阅读
- javascript - 如何使用 Keycloak 和 PKCE 流实现 React SPA 身份验证?
- reactjs - ESLint,将 React 变量视为未使用
- python - dash 可搜索的下拉菜单前景/背景输入颜色
- oracle - Oracle SQL 使用触发器检查重叠日期
- spring-boot - 带有动态键的 Java 对象的 Json 字符串
- python - 有没有办法在 tkinter 中检查窗口的状态(无论是打开还是关闭)
- java - 是否有一个 AWS sdk 来解析 AWS cloudformation YAML 并转换为 XML 或 JSON
- vhdl - VHDL 发现运算符“+”的“0”定义无法确定“+”的精确重载匹配定义
- node.js - AWS 代码管道错误 FATAL ERROR: Ineffective mark-compacts near heap limit 分配失败 - JavaScript 堆内存不足
- python - 如何按顺序输出最高值?