有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Elasticsearch反向搜索查询

我想使用elasticsearch在搜索查询中必须包含的数据之间进行搜索

例如:

{
  "query":{
     "match":{       
       "field":"some data to be searched"
      }
   }
}

应返回以下字段,因为查询数据同时包含somedata

{
 "field":"some data"
}

但此搜索查询不应返回任何内容:

{
  "query":{
     "match":{ 
        "field":"data to be searched"
      }
   }
}

我怎么能这么做


共 (1) 个答案

  1. # 1 楼答案

    您可以使用Percolate query来实现您的用例

    添加包含索引数据、映射、搜索查询和搜索结果的工作示例

    索引映射:

    {
      "mappings": {
        "properties": {
          "field": {
            "type": "text"
          },
          "query": {
            "type": "percolator"
          }
        }
      }
    }
    

    索引数据:

    {
      "query": {
        "match": {
          "field": {
            "query": "some data",
            "operator": "AND"
          }
        }
      }
    }
    

    搜索查询:

    {
      "query": {
        "percolate": {
          "field": "query",
          "document": {
            "field": "data to be searched"
          }
        }
      }
    }
    

    搜索结果:

    "hits": []
    

    搜索查询:

    {
      "query": {
        "percolate": {
          "field": "query",
          "document": {
            "field": "some data to be searched"
          }
        }
      }
    }
    

    搜索结果:

    "hits": [
          {
            "_index": "67658971",
            "_type": "_doc",
            "_id": "1",
            "_score": 0.26152915,
            "_source": {
              "query": {
                "match": {
                  "field": {
                    "query": "some data",
                    "operator": "AND"
                  }
                }
              }
            },
            "fields": {
              "_percolator_document_slot": [
                0
              ]
            }
          }
        ]