Term 精确查询 #
使用 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
}
}
}
}
返回内容包含匹配的文档,无论大小写是否有差异:
"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 外,所有参数都是可选的。
| 参数 | 数据类型 | 描述 |
|---|---|---|
value | String | 要在 <field> 中指定的字段中搜索的词项。只有当文档的字段值与词项完全匹配(包括正确的空格和大小写)时,该文档才会出现在结果中。 |
boost | Float | 一个浮点数值,用于指定该字段对相关性分数的权重。大于 1.0 的值会增加字段的权重。介于 0.0 和 1.0 之间的值会降低字段的权重。默认值为 1.0。 |
_name | String | 查询标签的查询名称。可选。 |
case_insensitive | Boolean | 如果为 true ,允许将值与索引字段的值进行不区分大小写的匹配。默认为 false (大小写敏感性由字段的映射决定)。 |