在elasticsearch上按类似UUID格式的字段进行查询

Jor*_*rdi 5 elasticsearch

我已经为那些已经动态创建的文档编制索引,所以我的意思是在创建新字段(动态)的同时创建了映射.

{
  "user":"living_team",
  "timestamp":"2015-12-14T18:06:47.085Z",
  "matter":"snip2.PNG",
  "comment":"Archive",
  "channel":"Feina",
  "feedTypes":[
     20
  ],
  "property_general_ldate":"2015-12-14T18:06:47.085Z",
  "property_tSize":7595.0,
  "resources":[
     {
        "timestamp":"2015-12-14T16:58:00.598Z",
        "matter":"snip2.PNG",
        "comment":"Archive",
        "channel":"Feina",
        "feedType":20,
        "mime":"image/png",
        "source":{
           "sourceId":{
              "id":"C:\\Users\\Beep\\Desktop\\share\\snip2.PNG",
              "batch":"c38eec2d-a282-11e5-baf4-382c4ab9e433",
              "client":"VIM12HCNZL"
           },
           "feedType":20,
           "property_folder":"C:\\Users\\Beep\\Desktop\\share",
           "property_lastAccessFolder_ldate":1450111821506
        },
        "property_size":7595.0,
        "property_creation_ldate":"2015-12-14T16:50:20.578Z",
        "property_name":"snip2.PNG",
        "nestedResources":[

        ]
     }
  ]
Run Code Online (Sandbox Code Playgroud)

}

我需要获得以下文件:resources.source.sourceId.id is exactly "X".我尝试过这个查询,但结果是空的.

curl -XGET 'http://ESNode01:9201/living_team/inputs/_search?pretty' -d '{
  "query":{
     "filtered":{
        "query":{
           "term":{
              "resources.source.sourceId.batch":"3fcb8905-a307-11e5-88de-382c4ab9e433"
           }
        },
        "filter":{
           "match":{
              "channel":"FeINa"
           }
        }
     }
  }
}'
Run Code Online (Sandbox Code Playgroud)

Val*_*Val 12

这是同样的问题,因为在你的另一个问题,即在resources.source.sourceId.batch串领域已经创建作为一个analyzed字段,因此价值c38eec2d-a282-11e5-baf4-382c4ab9e433已经被符号化到五个标记c38eec2d,a282,11e5,baf4,382c4ab9e433.

处理此问题的正确方法是not_analyzed为该字段设置特定映射.

另一个临时的方法是使用query_string完全匹配的查询:

curl -XGET 'http://ESNode01:9201/living_team/inputs/_search?pretty' -d '{
  "query":{
     "filtered":{
        "query":{
           "query_string":{
              "query": "resources.source.sourceId.batch:\"3fcb8905-a307-11e5-88de-382c4ab9e433\""
           }
        },
        "filter":{
           "match":{
              "channel":"FeINa"
           }
        }
     }
  }
}'
Run Code Online (Sandbox Code Playgroud)