我们在映射中使用了 minimal_english 词干过滤器。这是为了确保只有单数和复数是可搜索的,而不是相似的词。例如。 TestTests 在输入术语 - Test 时应该是 可搜索的 - 但 TesterTestersTesting 不应该是 。在尝试使用以下 RESTful API 进行搜索时,multi_field 属性类型可搜索,但 nested 属性类型不可搜索:

curl -X GET "http://10.113.124.136:9400/libtester/_search?pretty=true" -d '{
  "query": {
    "query_string": {
      "query": " DescriptionDescription ",
      "fields": [
        "abc"
      ]
    }
  }
}'

映射如下所示:
{
  "properties": {
    "abc": {
      "type": "multi_field",
      "fields": {
        "c_asset_id": {
          "type": "string",
          "index": "analyzed",
          "include_in_all": true,
          "analyzer": "basic_english"
        },
        "untouched": {
          "type": "string",
          "index": "analyzed",
          "include_in_all": false,
          "analyzer": "string_lowercase"
        }
      }
    },
    "xyz": {
      "type": "nested",
      "properties": {
        "c_viewpoint": {
          "type": "multi_field",
          "fields": {
            "c_viewpoint": {
              "type": "string",
              "index": "analyzed",
              "include_in_all": true,
              "analyzer": "basic_english"
            },
            "untouched": {
              "type": "string",
              "index": "analyzed",
              "include_in_all": false,
              "analyzer": "string_lowercase"
            }
          }
        }
      }
    },
    ...
  }
}

这是否与嵌套类型 - xyz 的映射有关,它们不能从与 multi_field 类型相同的 API 中进行搜索?

最佳答案

您可以搜索嵌套属性,它只需要稍微不同的语法。您必须指定路径,然后明确使用您要搜索的每个属性的路径。

本教程有一个 good overview of how nested documents work

关于Elasticsearch : singular and plural results,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13971655/

10-11 09:05