简体   繁体   中英

Elastic Search Percolate Boolean Queries

I am trying to get boolean queries which are stored in ES using Percolate API.

Index mapping is given below

curl -XPUT 'localhost:9200/my-index' -d '{
  "mappings": {
    "taggers": {
      "properties": {
        "content": {
          "type": "string"
        }
      }
    }
  }
}'

I am inserting records like this (Queries contain proper boolean format (AND, OR, NOT etc) as given in below example)

curl -XPUT 'localhost:9200/my-index/.percolator/1' -d '{
        "query" : {
            "match" : {
                "content" : "Audi AND BMW"
            }
        }
}'

And then I am posting a document to get matched queries.

curl -XGET 'localhost:9200/my-index/my-type/_percolate' -d '{
    "doc" : {
        "content" : "I like audi very much"
    }
}'

In above case no records should come because boolean query is "Audi AND BMW" but it is still giving record. It means that it is ignoring AND condition. I am not able to figure out that why it is not working for boolean queries.

You need to percolate this query instead, match queries do not understand the AND operator (they will treat it like the normal token and ), but query_string does.

curl -XPUT 'localhost:9200/my-index/.percolator/1' -d '{
    "query" : {
        "query_string" : {
            "query" : "Audi AND BMW",
            "default_field": "content"
        }
    }
}'

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM