【问题标题】:ElasticSearch: Does a query need to specifically use the suffix alias to work against a specific field?ElasticSearch:查询是否需要专门使用后缀别名来处理特定字段?
【发布时间】:2019-02-13 21:03:44
【问题描述】:

我对 Elastic Search 中字段的使用有点困惑。

查询是否需要专门识别字段后缀才能使关键字/多字段发挥作用?或者查询文本是否会自动根据已设置的内容进行检查。检查示例映射。因为我觉得我运行的查询似乎没有使用我可能拥有的任何应用分析器找到正确的字段。

GET /Samples/sample/_search
{       
    "query": {
      "dis_max": {
        "queries": [
          { "match": { "Field1": "alpha" }}
        ]
      }
    },
    "size": 300
} 

GET /Samples/sample/_search
{       
    "query": {
      "dis_max": {
        "queries": [
          { "match": { "Field1.raw": "alpha" }}
        ]
      }
    },
    "size": 300
}  

GET /Samples/sample/_search
{       
    "query": {
      "dis_max": {
        "queries": [
          { "match": { "Field1.edge": "alpha" }}
        ]
      }
    },
    "size": 300
}  

具有以下映射:

                 .Mappings(ms => ms
                    .Map<Sample>(m => m
                        .Properties(p => p
                            .Text(s => s
                                .Name(n => n.Field1)
                                .Fields(fs => fs
                                    .Keyword(ss => ss
                                        .Name("raw")
                                    )
                                    .Text(tt => tt
                                      .Name("edge")
                                      .Analyzer("sample_analyzer")
                                    )
                                ) 
                            )
                        )
                  )

【问题讨论】:

    标签: elasticsearch nest


    【解决方案1】:

    在您的示例中,您将针对三个不同的字段执行查询

    • Field1
    • Field1.raw
    • Field1.edge

    分别。

    Elasticsearch 仅使用指定的字段(对于需要指定字段的查询)。搜索策略很常见的是跨多个字段组合多个查询,并以某种受控方式(例如求和)组合相关性得分以产生整体相关性得分。

    使用 NEST,.Suffix() 允许您定位多字段,并且仍然使用 lambda 表达式进行强类型访问,直到多字段的名称,这在将文档反序列化到的 POCO 上不存在.

    【讨论】:

    • 所以我觉得我很困惑的是 ES 是否会自动使用那些“原始”、“边缘”字段进行查询而无需指定后缀?或者必须先指定后缀,然后才能使用它们。我问是因为在某些查询中我使用了..似乎其他字段可能会被使用而没有被后缀直接解决,这就是问题所在。所以你是说他们必须用后缀来解决,否则他们永远不会被使用?
    猜你喜欢
    • 2015-04-23
    • 1970-01-01
    • 2021-07-29
    • 2010-11-07
    • 1970-01-01
    • 2017-06-16
    • 2012-01-17
    • 2022-12-16
    • 1970-01-01
    相关资源
    最近更新 更多