查询弹性搜索多场

时间:2013-03-24 05:38:07

标签: elasticsearch

我在elasticsearch中为'asset_test'索引配置了以下设置:

{
  "settings" : {
    "analysis" : {
      "analyzer" : {
        "str_filtered_search_analyzer" : {
          "tokenizer" : "keyword",
          "filter" : ["lowercase"]
        },
        "str_prefix_analyzer" : {
          "tokenizer" : "keyword",
          "filter" : ["lowercase", "prefix"]
        },
        "str_substring_analyzer" : {
          "tokenizer" : "keyword",
          "filter" : ["lowercase", "substring"]
        },
        "path_analyzer" : {
          "type" : "custom",
          "tokenizer" : "path_hierarchy"
        }
      },
      "filter" : {
        "prefix" : {
          "type" : "edgeNGram",
          "min_gram" : 2,
          "max_gram" : 24,
          "side": "front"
        },
        "substring" : {
          "type" : "nGram",
          "min_gram" : 2,
          "max_gram" : 24
        }
      }
    }
  },
  "mappings" : {
    "asset" : {
      "properties" : {
        "_id": {
          "type" : "string",
          "index" : "not_analyzed"
        },
        "_rev": {
          "type" : "string",
          "index" : "not_analyzed"
        },
        "type": {
          "type" : "string",
          "index" : "not_analyzed"
        },
        "requiredBySystem": {
          "type" : "boolean"
        },
        "attributes": {
          "properties" : {
            "id" : {
              "type" : "string"
            },
            "type" : {
              "type" : "string",
              "index" : "not_analyzed"
            },
            "heading" : {
              "type" : "string"
            },
            "text" : {
              "type" : "string"
            },
            "users" : {
              "type" : "string"
            },
            "categories" : {
              "type" : "multi_field",
              "fields" : {
                "categories" : {
                  "type" : "string",
                  "index" : "not_analyzed"
                },
                "path" : {
                  "type" : "string",
                  "analyzer" : "path_analyzer"
                }
              }
            },
            "choices" : {
              "properties" : {
                "text" : {
                  "type" : "string"
                },
                "checked" : {
                  "type" : "boolean"
                }
              }
            },
            "requiredBySystem": {
              "type" : "boolean"
            },
            "required": {
              "type" : "boolean"
            }
          }
        }
      }
    }
  }
};

我在索引中有这个文件:

{
   "_id": "9399fb27448b1e5dfdca0181620418d4",
   "_rev": "14-173e71c77d32f0360f7afb2206b2a334",
   "type": "entryForm",
   "requiredBySystem": true,
   "formName": "Basic",
   "attributes": [
       {
           "id": "9399fb27448b1e5dfdca01816203d609",
           "type": "text",
           "heading": "Brand",
           "text": "",
           "requiredBySystem": true
       },
       {
           "id": "9399fb27448b1e5dfdca01816203dc61",
           "type": "text",
           "heading": "Model",
           "text": "",
           "requiredBySystem": true
       },
       {
           "id": "9399fb27448b1e5dfdca01816203decd",
           "type": "text",
           "heading": "Location",
           "text": "",
           "requiredBySystem": true
       },
       {
           "id": "9399fb27448b1e5dfdca01816203e68e",
           "type": "userSelectMenu",
           "heading": "Assigned To",
           "users": [
           ],
           "requiredBySystem": true
       },
       {
           "id": "9399fb27448b1e5dfdca01816203e9c9",
           "type": "categories",
           "heading": "Categories",
           "categories": [
               "/Airport/Hangar 1",
               "/Airport/Hangar 2"
           ],
           "requiredBySystem": true
       },
       {
           "id": "9399fb27448b1e5dfdca01816203ebdd",
           "type": "text",
           "heading": "Owner ID",
           "text": "",
           "requiredBySystem": true
       },
       {
           "id": "9399fb27448b1e5dfdca01816203f0da",
           "type": "textarea",
           "heading": "Description",
           "text": "",
           "requiredBySystem": true
       },
       {
           "id": "9399fb27448b1e5dfdca01816207uy5a",
           "type": "radio",
           "heading": "Radio Buttons",
           "choices": [
               {
                   "text": "Button 1",
                   "checked": false
               },
               {
                   "text": "Button 2",
                   "checked": true
               }
           ],
           "requiredBySystem": true
       },
       {
           "id": "9399fb27448b1e5dfdca01816205tgh6",
           "type": "checkboxes",
           "heading": "Checkboxes",
           "choices": [
               {
                   "text": "Box 1",
                   "checked": false
               },
               {
                   "text": "Box 2",
                   "checked": true
               }
           ],
           "requiredBySystem": true
       },
       {
           "id": "9399fb27448b1e5dfdca0181620k81gt",
           "type": "select",
           "heading": "Select Menu",
           "choices": [
               {
                   "text": "Option 1",
                   "checked": false
               },
               {
                   "text": "Option 2",
                   "checked": true
               }
           ],
           "requiredBySystem": true
       }
   ]
}

我正在尝试使用以下查询找到该文档,但未找到该文档:

{
    "query": {
        "field": {
            "attributes.categories.path": "/Airport"
        }
    }
}

有点坚持如何使这项工作。

* 更新:我将“属性”设置为嵌套类型,现在看来使用以下查询进行查询可以正常工作:

{
  "query" : {
      "nested" : { 
        "path" : "attributes",
        "query" : {
          "term" : {
            "attributes.categories.path" : "/Airport/Hangar 1"  
          } 
        }
      }
  }
}

我能以正确的方式解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

* 更新:我制作了'属性'现在,嵌套类型和使用以下查询查询似乎有效:

{
  "query" : {
      "nested" : { 
        "path" : "attributes",
        "query" : {
          "term" : {
            "attributes.categories.path" : "/Airport/Hangar 1"  
          } 
        }
      }
  }
}