词语查询
使用 term 查询在字段中搜索精确术语。例如,以下查询搜索具有精确行号的行
GET shakespeare/_search
{
"query": {
"term": {
"line_id": {
"value": "61809"
}
}
}
}
当文档被索引时,text 字段会被分析。分析包括对文本进行分词、转换为小写以及去除标点符号。与会分析查询文本的 match 查询不同,term 查询只匹配精确的术语,因此可能不会返回相关结果。避免在 text 字段上使用 term 查询。有关更多信息,请参阅术语级查询与全文查询比较。
您可以在 case_insensitive 参数中指定查询应不区分大小写
GET shakespeare/_search
{
"query": {
"term": {
"speaker": {
"value": "HAMLET",
"case_insensitive": true
}
}
}
}
在 OpenSearch 2.x 及更早版本中,复杂性会随着字符数量呈指数级增长,导致堆内存使用量高并降低性能。为避免这种情况,请勿使用不区分大小写的搜索。相反,请在索引字段的分析器中应用小写分词过滤器,并使用小写查询术语。
响应包含匹配的文档,无论大小写差异如何
"hits": {
"total": {
"value": 1582,
"relation": "eq"
},
"max_score": 2,
"hits": [
{
"_index": "shakespeare",
"_id": "32700",
"_score": 2,
"_source": {
"type": "line",
"line_id": 32701,
"play_name": "Hamlet",
"speech_number": 9,
"line_number": "1.2.66",
"speaker": "HAMLET",
"text_entry": "[Aside] A little more than kin, and less than kind."
}
},
...
}
参数
查询接受字段名称 (<field>) 作为顶级参数
GET _search
{
"query": {
"term": {
"<field>": {
"value": "sample",
...
}
}
}
}
<field> 接受以下参数。除 value 外,所有参数都是可选的。
| 参数 | 数据类型 | 描述 |
|---|---|---|
值 | 字符串 | 要在 <field> 中指定的字段中搜索的术语。仅当文档的字段值与该术语精确匹配(包括正确的间距和大小写)时,该文档才会在结果中返回。 |
提升 | 浮点 | 一个浮点值,指定此字段对相关性得分的权重。高于 1.0 的值会增加字段的相关性。介于 0.0 和 1.0 之间的值会降低字段的相关性。默认值为 1.0。 |
_name | 字符串 | 用于查询标记的查询名称。可选。 |
不区分大小写 (case_insensitive) | 布尔型 | 如果为 true,则允许值与索引字段值进行不区分大小写的匹配。默认值为 false(大小写敏感性由字段的映射决定)。 |