solr удалить по идентификатору с помощью coldfusion cfhttp

Я хочу удалить документы по id через cfhttp. Но это не работает. Кто-нибудь может помочь? Что не так?

<cfhttp method="get" url="#elm_solr_url#update/?">
    <cfhttpparam name="stream.body" 
        type="FormField" 
        value="<delete><query>id:888_1100_1509_1_1</query></delete>">
    <cfhttpparam name="commit" type="FormField" value="true"> 
</cfhttp>

person Maco-ic    schedule 30.06.2014    source источник
comment
Что происходит, сообщение об ошибке?   -  person duncan    schedule 30.06.2014
comment
почему вы не используете <cfindex> для того же? См. stackoverflow.com/a/17456337/492335.   -  person duncan    schedule 30.06.2014
comment
Я не эксперт по этому тегу, комбинация method=get и type=formfield выглядит подозрительно.   -  person Dan Bracuk    schedule 30.06.2014
comment
... и вам, вероятно, следует использовать method="POST" и type="XML" и передавать фактический объект XML (например, использовать <cfxml>) вместо строки, которая выглядит как XML   -  person duncan    schedule 30.06.2014
comment
Спасибо за ответ. Я не могу использовать ‹cfindex, потому что использую Coldfusion версии 8. Я получаю сообщение об ошибке: org.apache.solr.common.SolrException: Missing ContentType   -  person Maco-ic    schedule 30.06.2014
comment
Сообщение об ошибке появляется, если я использую переменные ширины кода ниже: <cfhttp method="get" url="http://localhost:8983/solr/update/?"> <cfhttpparam name="stream.body" type="FormField" value="%3Cdelete%3E%3Cquery%3Eid:#P_ID#_#M_ID#_#E_ID#_#E_Count#_2%3C/query%3E%3C/delete%3E"> <cfhttpparam name="commit" type="FormField" value="true"></cfhttp>   -  person Maco-ic    schedule 30.06.2014


Ответы (1)


Попробуйте что-то вроде:

<cfxml variable="deleteID">
        <delete><id>888_1100_1509_1_1</id></delete>
</cfxml>

<cfhttp method="POST" url="#elm_solr_url#update/">
    <cfhttpparam type="XML" value="#deleteID#">
</cfhttp>

ИЛИ, что-то вроде:

<cfhttp method="GET" url="#elm_solr_url#update/">
    <cfhttpparam type="url" name="stream.body" value="#URLEncodedFormat('<delete><id>888_1100_1509_1_1</id></delete>')#">
</cfhttp>

Вы можете прочитать http://wiki.apache.org/solr/UpdateXmlMessages.

person duncan    schedule 30.06.2014
comment
И я нет. Сообщение об ошибке? - person duncan; 01.07.2014
comment
Теперь он работает с этим кодом: <cfhttp method="post" url="http://localhost:8983/solr/collection1/update/?"> <cfhttpparam type="FormField" name="stream.body" value="<delete><id>#P_ID#_#M_ID#_#E_ID#_#E_Count#_1</id></delete>"> <cfhttpparam type="FormField" name="commit" value="true"> </cfhttp> - person Maco-ic; 01.07.2014
comment
Другими словами, все, что вам нужно было сделать, это изменить исходный код с method=get на method=post? - person duncan; 01.07.2014