ElasticSearch 查询 uuid 字段
ElasticSearch query for uuid field
我想查询其中一个字段包含字符串格式的uuid 值的elasticsearch 记录。这是记录结构
{
"field1": "test 1",
"field2": "testing 1",
"field3": "c48718a5-d715-4fbd-8a53-40707c83b2ce.eb47d75e-6b2f-403c-9e56-f1569d5b40d0"
},
{
"field1": "test 2",
"field2": "testing 2",
"field3": "c48718a5-d715-4fbd-8a53-40707c83b2ce.eb47d75e-6b2f-403c-9e56-f1569d5b40d0.d0644d62-f079-46ee-ab98-30d8d16977c2"
}
我的查询是这样的
{
"query": {
"query_string": {
"query": "(field1:test) AND (field3:c48718a5-d715-4fbd-8a53-40707c83b2ce.eb47d75e-6b2f-403c-9e56-f1569d5b40d0)",
"default_operator": "and"
}
}
}
这是字段 3 的映射
"field3": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
问题是当我 运行 这个查询时,elasticsearch 正在发送两条记录。我只想获取第一条记录。这里 elasticsearch 匹配 field3 中提供的字符串,但我想要字段值等于给定值的记录。
求推荐。谢谢
你快到了。您只需要使用 field3.keyword
而不是 field3
。这使用关键字分析器而不是标准分析器(注意 field3 字段后的“.keyword”)。
将您的搜索查询修改为
{
"query": {
"query_string": {
"query": "(field1:test) AND (field3.keyword:c48718a5-d715-4fbd-8a53-40707c83b2ce.eb47d75e-6b2f-403c-9e56-f1569d5b40d0)",
"default_operator": "and"
}
}
}
此外,您可以从搜索查询中删除 default_operator
,因为您已经在 query
部分添加了 AND
。
我想查询其中一个字段包含字符串格式的uuid 值的elasticsearch 记录。这是记录结构
{
"field1": "test 1",
"field2": "testing 1",
"field3": "c48718a5-d715-4fbd-8a53-40707c83b2ce.eb47d75e-6b2f-403c-9e56-f1569d5b40d0"
},
{
"field1": "test 2",
"field2": "testing 2",
"field3": "c48718a5-d715-4fbd-8a53-40707c83b2ce.eb47d75e-6b2f-403c-9e56-f1569d5b40d0.d0644d62-f079-46ee-ab98-30d8d16977c2"
}
我的查询是这样的
{
"query": {
"query_string": {
"query": "(field1:test) AND (field3:c48718a5-d715-4fbd-8a53-40707c83b2ce.eb47d75e-6b2f-403c-9e56-f1569d5b40d0)",
"default_operator": "and"
}
}
}
这是字段 3 的映射
"field3": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
问题是当我 运行 这个查询时,elasticsearch 正在发送两条记录。我只想获取第一条记录。这里 elasticsearch 匹配 field3 中提供的字符串,但我想要字段值等于给定值的记录。
求推荐。谢谢
你快到了。您只需要使用 field3.keyword
而不是 field3
。这使用关键字分析器而不是标准分析器(注意 field3 字段后的“.keyword”)。
将您的搜索查询修改为
{
"query": {
"query_string": {
"query": "(field1:test) AND (field3.keyword:c48718a5-d715-4fbd-8a53-40707c83b2ce.eb47d75e-6b2f-403c-9e56-f1569d5b40d0)",
"default_operator": "and"
}
}
}
此外,您可以从搜索查询中删除 default_operator
,因为您已经在 query
部分添加了 AND
。