我有檔案:
{
"_index" : "logs",
"_id" : "e174f29c-9f0b-4aab-a3b3-7ab5dcb8a50a",
"_score" : null,
"_source" : {
"number" : 1,
"request_type" : 1,
"request_entity_type" : 1,
"entity_type" : 1,
"entity_id" : "6c125004-4720-4258-a5d6-3fa1c7468bc8",
"field_name" : "name",
"old_value" : null,
"new_value" : """[{"locale":"ru-RU","text_value":"1234"}]""",
"created_by" : "b6aa1f8f-79b8-45b6-a11c-fe65b8bdfc35",
"created_at" : "2022-06-29T10:47:43.205753"
}
}
當我嘗試通過entity_type和field_name欄位獲取此檔案時,它可以作業:
GET logs/_search
{
"query": {
"bool": {
"filter": [
{"term" : { "entity_type" : "1" }},
{"term": {"field_name": "name"}}
]
}
},
"sort": [
{
"number": {
"order": "desc"
}
}
]
}
但是當我更改為時field_name,entity_id我得到零命中:
GET logs/_search
{
"query": {
"bool": {
"filter": [
{"term" : { "entity_type" : "1" }},
{"term": {"entity_id": "6c125004-4720-4258-a5d6-3fa1c7468bc8"}}
]
}
},
"sort": [
{
"number": {
"order": "desc"
}
}
]
}
為什么它不起作用?field_name和有什么區別entity_id
uj5u.com熱心網友回復:
看起來您的entity_id欄位是由 Elasticsearch 的開箱即用映射創建的,它將其分析為文本欄位并將其分解,添加.keyword應該可以作業。
{
"query": {
"bool": {
"filter": [
{"term" : { "entity_type" : "1" }},
{"term": {"entity_id.keyword": "6c125004-4720-4258-a5d6-3fa1c7468bc8"}} // note `entity_id.keyword` as a field name.
]
}
},
"sort": [
{
"number": {
"order": "desc"
}
}
]
}
注意:如果您沒有定義顯式映射,Elasticsearch會為每個欄位同時生成text和欄位,因為它不知道您的用例。keywordtext
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/498381.html
