elasticsearch 我们可以在field_name中使用通配符吗?或者我们可以在query_string内部的字段块中应用条件吗?

u5rb5r59  于 2023-03-01  发布在  ElasticSearch
关注(0)|答案(1)|浏览(104)

我有以下与ElasticSearch相关的问题:-
1.我们可以在查询中的术语块的字段名称中使用通配符吗?如果不能,有没有其他方法来实现这一点?就像在下面的查询中,我想实现类似的东西。

"must": [
                {
                  "term": {
                    "*_sold.Type": "Type XYZ"
                  }
                }
        ]
  }```

1.我们如何在query_string块中的**“字段”**中应用条件?例如,我有查询的这一部分,如果属性类型为类型XYZ,则只需搜索此属性。

{
          "query_string": {
            "query": "data",
            "type": "best_fields",
            "fields": [
              "date",
              "id_number",
              "type",
              "*__Sold.*"  // here I want that if "*_Sold.Type" == "Type XYZ" then only seach inside this attributes otherwise skip it.  
            ],
            "lenient": true,
            "default_operator": "AND",
            "boost": 3
          }

}

这是示例文档。

{
            "_index" : "_dev",
            "_type" : "_doc",
            "_id" : "data-2",
            "_score" : 1.0,
            "_source" : {
              "type" : "datas",
              "id_number" : 736762732784934,
              "date" : "2011-01-26",
              "Service_Sold" : [
                {
                  "Type" : "Type XYZ",
                  "Service_Name" : "Service XYZ"
                }
              ],
              "Product_Sold" : [
                {
                  "Type" : "Type ABC",
                  "Product_Name" : "Product ABC"
                }
              ]
              "Item_Sold" : [
                {
                  "Type" : "Type XYZ",
                  "Item_Name" : "Item XYZ"
                }
              ]
              ...
              50 other attributes
  }

注意:7.10版本ElasticSearch在KIBANA上运行查询。如果需要,我们也可以升级我们的版本。

jecbmhm3

jecbmhm31#

您可以使用query_string,它允许您实现您所寻找的内容。您的查询应该如下所示:

{
  "query": {
    "query_string": {
      "fields": [
        "*_sold.Type"
      ],
      "query": "Type XYZ"
    }
  }
}

相关问题