过滤 ID 值
Filter on ID values
我在使用 ID 值过滤字段时遇到问题,不确定如何发生,这是映射和示例。
添加新用户后可以看到,primary_user
设置为AWBFyulclsp0PJbvPiuB
,使用filter
将找不到,除非在keyword
中使用过滤请求。
这只发生在 ID 的值上。
这种行为的根本原因是什么?
GET users/_mapping/
Response:
{
...
...
"primary_user": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
------
POST users/user
{
"primary_user": "AWBFyulclsp0PJbvPiuB"
}
Response:
{
"_index": "users",
"_type": "user",
"_id": "AWIaOFgQmedTIIkbtGPG",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"created": true
}
------
GET users/user/_search
{
"query": {
"bool": {
"filter": {
"term": {
"primary_user": "AWBFyulclsp0PJbvPiuB"
}
}
}
}
}
Response:
{
"took": 0,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}
------
GET users/user/_search
{
"query": {
"bool": {
"filter": {
"term": {
"primary_user.keyword": "AWBFyulclsp0PJbvPiuB"
}
}
}
}
}
Response:
{
"_index": "users",
"_type": "user",
"_id": "AWIaOFgQmedTIIkbtGPG",
"_score": 0,
"_source": {
"primary_user": "AWBFyulclsp0PJbvPiuB"
}
}
因为 primary_user
有一个文本数据类型,如您的映射中所写:
"primary_user": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
因此,或者您更改要查询的字段:
GET users/user/_search
{
"query": {
"bool": {
"filter": {
"term": {
"primary_user.keyword": "AWBFyulclsp0PJbvPiuB"
}
}
}
}
}
或从术语更改为匹配查询:
GET users/user/_search
{
"query": {
"bool": {
"filter": {
"match": {
"primary_user": "AWBFyulclsp0PJbvPiuB"
}
}
}
}
}
我在使用 ID 值过滤字段时遇到问题,不确定如何发生,这是映射和示例。
添加新用户后可以看到,primary_user
设置为AWBFyulclsp0PJbvPiuB
,使用filter
将找不到,除非在keyword
中使用过滤请求。
这只发生在 ID 的值上。
这种行为的根本原因是什么?
GET users/_mapping/
Response:
{
...
...
"primary_user": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
------
POST users/user
{
"primary_user": "AWBFyulclsp0PJbvPiuB"
}
Response:
{
"_index": "users",
"_type": "user",
"_id": "AWIaOFgQmedTIIkbtGPG",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"created": true
}
------
GET users/user/_search
{
"query": {
"bool": {
"filter": {
"term": {
"primary_user": "AWBFyulclsp0PJbvPiuB"
}
}
}
}
}
Response:
{
"took": 0,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}
------
GET users/user/_search
{
"query": {
"bool": {
"filter": {
"term": {
"primary_user.keyword": "AWBFyulclsp0PJbvPiuB"
}
}
}
}
}
Response:
{
"_index": "users",
"_type": "user",
"_id": "AWIaOFgQmedTIIkbtGPG",
"_score": 0,
"_source": {
"primary_user": "AWBFyulclsp0PJbvPiuB"
}
}
因为 primary_user
有一个文本数据类型,如您的映射中所写:
"primary_user": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
因此,或者您更改要查询的字段:
GET users/user/_search
{
"query": {
"bool": {
"filter": {
"term": {
"primary_user.keyword": "AWBFyulclsp0PJbvPiuB"
}
}
}
}
}
或从术语更改为匹配查询:
GET users/user/_search
{
"query": {
"bool": {
"filter": {
"match": {
"primary_user": "AWBFyulclsp0PJbvPiuB"
}
}
}
}
}