Elastic Search Hyphen issue with term filter

后端 未结 3 1073
忘了有多久
忘了有多久 2020-12-12 20:45

I have the following Elastic Search query with only a term filter. My query is much more complex but I am just trying to show the issue here.

{
    \"filter\         


        
3条回答
  •  隐瞒了意图╮
    2020-12-12 21:12

    I would guess that your field is analyzed, which is default setting for string fields in elasticsearch. As a result, when it indexed it's not indexed as one term "update-time" but instead as 2 terms: "update" and "time". That's why your term search cannot find this term. If your field will always contain values that will have to be matched completely as is, it would be the best to define such field in mapping as not analyzed. You can do it by recreating the index with new mapping:

    curl -XPUT http://localhost:9200/your-index -d '{
        "mappings" : {
            "your-type" : {
                "properties" : {
                    "field" : { "type": "string", "index" : "not_analyzed" }
                }
            }
        }
    }'
    
    curl -XPUT  http://localhost:9200/your-index/your-type/1 -d '{
        "field" : "update-time"
    }'
    
    curl -XPOST http://localhost:9200/your-index/your-type/_search -d'{
        "filter": {
            "term": {
                    "field": "update-time"
            }
        }
    }'
    

    Alternatively, if you want some flexibility in finding records based on this field, you can keep this field analyzed and use text queries instead:

    curl -XPOST http://localhost:9200/your-index/your-type/_search -d'{
        "query": {
            "text": {
                    "field": "update-time"
            }
        }
    }'
    

    Please, keep in mind that if your field is analyzed then this record will be found by searching for just word "update" or word "time" as well.

提交回复
热议问题